首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌入式软件工程师笔试面试指南-CC++

当数组作为参数传给函数时,传递的是指针,而不是数组,即传递的是数组的首地址。 不使用 sizeof,如何求int占用的字节数?..., const常量在程序中确确实实存在,并且可以被调用、传递 const常量有数据类型,而 define常量没有数据类型。...全局变量随主程序创建而创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在了。 使用方式不同。...派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好地解决了软件的可重用性问题。...因为C++不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。 C++中如何阻止一个类被实例化? C++中可以通过使用抽象类,或者将构造函数声明为private阻止一个类被实例化。

1.6K11

php面试之面向对象的相关知识(下篇)

这就是一个非常典型的浅拷贝的例子。为了使两个对象完全独立,就需要对对象进行深拷贝。那么如何实现呢,PHP提供了类似于__clone方法(类似于C++的拷贝构造函数)。...其中,this指的是指向当前对象的指针(暂用C语言里面的指针来描述),self指的是指向当前类的指针,parent指的是指向父类的指针。 以下将具体对这三个关键字进行分析。 this关键字 实例的指针,不指向任何其他对象或类。...> 上例中,成员属性都是public的,特别是父类的,是为了供继承类通过this来访问。...2)接口没有数据成员(可以有常量),但是抽象类有数据成员(各种类型的成员变量),抽象类可以实现数据的封装。 3)接口没有构造函数,抽象类可以有构造函数。

57820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Jvm面试题总结及答案 300道(针对Jvm的面试题 )

    15、如何判断一个常量是废弃常量 ? 运行时常量池主要回收的是废弃的常量。...16、对象的内存布局了解吗? 对象在堆内存的存储布局可分为对象头、实例数据和对齐填充。 对象头占 12B,包括对象标记和类型指针。...Mark Word 被设计为动态数据结构,以便在极小的空间存储更多数据,根据对象状态复用存储空间。 类型指针是对象指向它的类型元数据的指针,占 4B。JVM 通过该指针来确定对象是哪个类的实例。...实例数据是对象真正存储的有效信息,即本类对象的实例成员变量和所有可见的父类成员变量。存储顺序会受到虚拟机分配策略参数和字段在源码中定义顺序的影响。...2、对象类型指针( Class Pointer ),占4字节 对象指向它的类元数据的指针、 JVM 就是通过它来确定是哪个 Class 的实例。

    54640

    硬核 | C++ 基础大全

    (补充:静态非常量数据成员,其只能在类外定义和初始化,在类内仅是声明而已。)...而 C++ 首先考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题领域,这样就能通过获取对象的状态信息得到输出。...Java 中不提供 goto 语句,虽然指定 goto 作为关键字,但不支持它的使用,使程序简洁易读。 Java 的异常机制用于捕获例外事件,增强系统容错能力。 说一下 C++ 里是怎么定义常量的?...动态多态的实现与虚函数表,虚函数指针相关。 扩展: 子类是否要重写父类的虚函数?子类继承父类时, 父类的纯虚函数必须重写,否则子类也是一个虚类不可实例化。...当数据成员中没有指针时,浅拷贝是可行的。 但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针指向同一个地址,当对象快要结束时,会调用两次析构函数,而导致指野指针的问题。

    1.2K10

    虚函数后面的分号可有可无_虚函数需要实现吗

    首先理解一下分开的意思 成员函数后面用 const 修饰,const表示this是一个指向常量的指针,即对象成为一个常量,即它的成员不能够变化....(默认情况下,this的类型是指向类类型非常量版本的常量指针。...例如在Sales_data成员函数中,this的类型是Sales_data *const,即类一旦实例化一个对象后,this指向这个对象,是不能改变的,但是对象本身可以变) =0表示这个成员函数是纯虚函数...,也就是它可以没有定义,只有接口,由它的继承类具体定义它的行为,当然,你也可以给它定义缺省的函数体 一个类里如果包含 =0 的纯虚函数,那么这个类就是一个抽象类,它不能具体实例化(不能创建它的对象),...如果你的子类中都重新定义了这个函数,那个父类中函数的定义就没有什么用了所以可以不定义只说明就行,也就是定义为纯虚函数形如: virtual 返回值 函数名(参数表)=0;这里就不用定义实际的函数了。

    32620

    .NET面试题解析(05)-常量、字段、属性、特性与委托

    哪些类型可以定义为常量?常量const有什么风险? 3. 字段与属性有什么异同? 4. 静态成员和非静态成员的区别? 5. 自动属性有什么风险? 6. 特性是什么?如何使用? 7....假如A引用了B程序集(B.dll文件)中的一个常量,如果后面单独修改B程序集中的常量值,只是重新编译了B,而没有编译程序集A,就会出问题了,就是上面所说的不支持跨程序集版本更新。...常量值更新后,所有使用该常量的代码都必须重新编译,这是我们在使用常量时必须要注意的一个问题。 不要随意使用常量,特别是有可能变化的数据; 不要随便修改已定义好的常量值; ?  ...枚举的成员定义和常量定义一样,因此枚举其实本质上就相当是一个常量集合。...静态成员和非静态成员的区别? 静态变量使用 static 修饰符进行声明,静态成员在加类的时候就被加载(上一篇中提到过,静态字段是随类型对象存放在Load Heap上的),通过类进行访问。

    83610

    【c++】类和对象(二)this指针

    ,函数体中没有关于不同对象的区分,也就是说,d1和d2调用的是同一个函数,那当d1调用 Init 函数时,该函数是如何知道应该设置d1对象,而不是设置d2对象呢 首先思考,这里打印函数,访问的变量是哪里的...每个对象都有自己独立的一套成员变量,占用各自的内存空间 因此,当成员函数Print()通过this指针(隐式指向当前对象)访问这些成员变量时,它实际上访问的是调用这个成员函数的那个==特定对象(实例...每个对象的_year、_month和_day都存储在各自独立的内存区域中,这些内存区域是在对象被创建时随对象一起分配的 那么我d1,d2如何找到这两个函数呢?...而指针p本身(即存储字符串地址的变量)作为局部变量,存储在栈上 i(取决于编译器优化)和j存储在栈上。 字符串常量"abcdefg"存储在常量区。 指针p(存储字符串常量的地址)存储在栈上。...这种特殊情况下,代码可运行,主要是因为成员函数的调用并没有实际依赖于this指针指向的对象实例的状态 因为PrintA()不访问对象的任何成员变量,所以这个调用在技术上不需要访问通过this指针指示的内存地址

    10910

    .NET面试题解析(05)-常量、字段、属性、特性与委托

    哪些类型可以定义为常量?常量const有什么风险? 3. 字段与属性有什么异同? 4. 静态成员和非静态成员的区别? 5. 自动属性有什么风险? 6. 特性是什么?如何使用? 7....假如A引用了B程序集(B.dll文件)中的一个常量,如果后面单独修改B程序集中的常量值,只是重新编译了B,而没有编译程序集A,就会出问题了,就是上面所说的不支持跨程序集版本更新。...常量值更新后,所有使用该常量的代码都必须重新编译,这是我们在使用常量时必须要注意的一个问题。 不要随意使用常量,特别是有可能变化的数据; 不要随便修改已定义好的常量值; ? ?...枚举的成员定义和常量定义一样,因此枚举其实本质上就相当是一个常量集合。...静态成员和非静态成员的区别? 静态变量使用 static 修饰符进行声明,静态成员在加类的时候就被加载(上一篇中提到过,静态字段是随类型对象存放在Load Heap上的),通过类进行访问。

    1K20

    java接口中方法、属性修饰符详解

    接口中字段的修饰符:public static final(默认不写)  如下解释:  public: 使接口的实现类可以使用这个常量  static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法...static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。             ...如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static。 ...final:              接口中不可以定义变量即定义的变量前都要加上final修饰,使之成为常量(没有final修饰的是变量,加上final修饰就会变成常量)。...接口中方法的修饰符:public abstract(默认不写)  abstract:                  接口仅仅描述系统能做什么,但是不指名如何去做,所以接口中的方法都是抽象(abstract

    1.3K20

    C++关键知识点梳理

    引用只能绑定在对象上,而不能与字面量或者某个表达式的计算结果绑定在一起;const 指针 & 引用函数指针:指向另一类型的对象,是对象不是别名,所以不需要定义时初始化,但是未经初始化的指针容易引发运行时错误...:指针本身是常量,不能指向其他对象,例如 int *const p1=&i,const int ci =42;底层指针:指针所指向的对象是常量,const int *p2=&ci;常量在类中使用:对于不修改类成员变量的成员函数...,例如,get操作的成员函数最好定义为常量成员函数;常量对象、常量对象的引用或指针都只能调用常量成员函数。...,否则编译器不知道该分配多少内存给类的数据成员。...,构造函数初始化类的非static数据成员,析构函数销毁非static数据成员,而且数据成员的销毁顺序和在构造函数中初始化的顺序相反。

    98530

    深入理解JVM Note

    而 class Test{ int a = 3; } 这是随对象放到堆里的。...如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息 ?...如果使用直接指针访问,那么Java堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,而reference中存储的直接就是对象地址 ?...Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。...,而不会输出“SubClass init!”。对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用父类中定义的静态字段,只会触发父类 的初始化而不会触发子类的初始化。

    33150

    C++ 知识点总结篇

    const 在不同位置时的不同意义 指针类型前:声明一个指向常量的指针,程序中不能通过指针来改变它所指向的值,但指针本身的值可以改变,即指针可以指向其他数据; "*"号和指针名之间,声明一个指针常量(常指针...),指针本身的值不可改变,即不能指向其他数据,但指向的数据的值可以改变; 两个地方都加,声明指向常量的指针常量,指针本身的值不可改变,指向的数据也不能通过指针改变; 函数指针 使用函数指针之前,必须先赋值...,使它指向一个函数入口地址,赋值语法格式为:函数指针名 = 函数名,其中函数名代表的函数必须是一个已经定义过的,和函数指针具有相同返回类型的函数,指针调用函数格式:(*指针变量)(实参列表); 访问权限...:父类的公有成员和保护成员作为子类的的私有成员,且不能被子类的派生类访问; 公有继承 public:父类的公有成员和保护成员作为子类的成员时,仍保持原有状态,父类私有成员仍为私有; 保护继承 protected...this 指针,只能访问静态成员(包括静态成员变量和静态成员函数); 普通成员函数有 this 指针,可以访问类中任意成员,而静态成员函数无 this指针;

    50830

    java接口中方法、属性修饰符详解「建议收藏」

    接口中字段的修饰符:public static final(默认不写) 如下解释: public: 使接口的实现类可以使用这个常量 static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法...static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。...如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static。...final: 接口中不可以定义变量即定义的变量前都要加上final修饰,使之成为常量(没有final修饰的是变量,加上final修饰就会变成常量)。...接口中方法的修饰符:public abstract(默认不写) abstract: 接口仅仅描述系统能做什么,但是不指名如何去做,所以接口中的方法都是抽象(abstract

    1.8K20

    整理了70道C语言与C++常见问答题

    「注意」:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。...常量指针 是指定义了一个指针,这个指针指向一个只读的对象,不能通过常量指针来改变这个对象的值。 指针常量强调的是指针的不可改变性,而常量指针强调的是指针对其所指对象的不可改变性。...常量指针是指定义了一个指针,这个指针指向一个只读的对象,不能通过常量指针来改变这个对象的值。 指针常量强调的是指针的不可改变性,而常量指针强调的是指针对其所指对象的不可改变性。...「注意」:无论是指针常量还是常量指针,其最大的用途就是作为函数的形式参数,保证实参在被调用函数中的不可改变特性。 27 如何避免“野指针” 指针变量声明时没有被初始化。...的向下兼容性,把C++中的最基本的对象单元规定为class而不是struct,就是为了避免各种兼容性要求的限制 对struct定义的扩展使C语言的代码能够更容易的被移植到C++中 32 C++类内可以定义引用数据成员吗

    3.1K01

    C++基础闯关100题,你能闯多少?【2021超硬核大厂高频面试题】

    虚函数是允许被其子类重新定义的成员函数。 可以实现用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。...虚函数通过虚函数表来实现,而指向虚函数表的指针也需要在对象实例化后创建,那么就违背了先实例化后调用的准则。 21、常量指针和指针常量区别? 常量指针是一个指针,读成常量的指针,指向一个只读变量。...宏定义在预处理的时候进行简单的字符串替换,而内联函数在编译时在每个调用内联函数的地方将函数展开,这样不用使内联函数占用栈空间,提高效率。...在任何同一时刻,union值存放了一个被先选中的成员,而结构体struct的所有成员都存在。 27、什么是野指针和悬空指针?...正因为没有this指针,所以static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员; static成员函数不能被virtual修饰,static成员不属于任何对象或实例

    2.2K20

    C++笔试面试题整理

    因此,使用reinterpret_casts的代码很难移植。reinterpret_casts的最普通的用途就是在函数指针类型之间进行转换。 什么是封装?C++中是如何实现的?...至少说明3种 const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查。...生命周期不同: 全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 使用方式不同:通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用...静态数据成员没有进入程序的全局名字空间,因此不存在程序中其他全局名字冲突的问题。 使用静态数据成员可以隐藏信息。因为静态成员可以是Private成员,而全局对象不能。...静态函数存在的意义? 静态私有成员在类外不能被访问,可通过类的静态成员函数来访问; 当类的构造函数是私有的时,不像普通类那样实例化自己,只能通过静态成员函数来调用构造函数。

    2.6K40

    C++语言基础篇(二)

    (补充:静态⾮常量数据成员,其只能在类外定义和初始化,在类内仅是声明⽽已。)...; static 成员函数不能被 virtual 修饰,static 成员不属于任何对象或实例,所以加上 virtual 没有任何实际意 义;静态成员函数没有 this 指针,虚函数的实现是为每⼀个对象分配...在使⽤这些常量的时候,只要不改变这些常量的值即可。...所以不能在类的声明中初始化 const 数据成员, 因为类的对象在没有创建时候,编译器不知道 const 数据成员的值是什么。const 数据成员的初始化只能在类的构 造函数的初始化列表中进⾏。...要注 意,const 关键字和 static 关键字对于成员函数来说是不能同时使⽤的,因为 static 关键字修饰静态成员函数不含 有 this 指针,即不能实例化,const 成员函数⼜必须具体到某

    59510

    c++面试选择题_C语言经典笔试题

    从基类继承来的纯虚函数,在派生类中仍是虚函数。 抽象类中不仅包括纯虚函数,也可包括虚函数。抽象类必须用作派生其他类的基类,而不能用于直接创建对象实例。但仍可使用指向抽象类的指针支持运行时多态性。...结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。 (2)....const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 1) const 常量有数据类型,而宏常量没有数据类型。...;而str5,str6,str7,str8是指针,它们指向相同的常量区域。...第26题:const 与 #define 的比较 ,const有什么优点? (1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。

    1.1K10

    吃透这些内容,c++ 不再难学

    复杂的基础语法 以指针和引用为例,这两个在其他编程语言里不常见。 指针本身并不复杂,但指针和其他乱七八糟的东西配合起来使用,就很容易迷惑新手。 比如指针与常量:下面这两行代码有什么错误?...const int a = 1; int * const pa = &a; 熟悉的同学一眼就能看出:int * const pa 声明的 pa 是个常量,它指向的内容 int 不是常量,而 const...class Child : private Parent { // ... } 如果派生描述符不是 public,则子类的指针、引用 不能隐式转换为父类的指针、引用。...,实例化的子类对象里包含了 子类成员部分+父类成员部分。...所以就有了虚继承,虚继承可以保证 B 的实例只有一份 A 的成员。

    1.4K30
    领券