首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

面试中常问到的C++有关问题

2012-10-06 
面试中常问到的C++问题C++定义构造函数必须使用初始化列表的场合明其理,而知其然也.先给理论。1. 初始化 !

面试中常问到的C++问题
C++定义构造函数必须使用初始化列表的场合

明其理,而知其然也.先给理论。1. 初始化 != 赋值. a.初始化代表为变量分配内存. 变量在其定义处被编译器初始化(编译时). 在函数中, 函数参数初始化发生在函数调用时(运行时). b.赋值代表"擦除对象当前值, 赋予新值". 它不承担为对象分配内存的义务.2. C++中, 类成员的初始化于初始化列表中完成, 先于构造函数体执行. 即成员真正的初始化发生在初始化列表中, 而不是构造函数体中.再给说明。1. 如果类中有一个成员是一个引用, 由于引用必须给予初始值, 因此, 引用必须使用初始化列表.2. 同理, const属性必须给予初始值, 必须使用初始化列表.3. 继承类中调用基类初始化构造函数, 实际上就是先构造基类对象, 必须使用初始化列表.别的不再说明, 什么时候必须使用初始化列表是很明显的;另外, 简单的说, 任何时候都鼓励使用初始化列表, 一些别的事情(比如在构造函数中分配资源之类的, 请参考RAII, Resource Acquizition Is Initialization)可以放在构造函数体内完成.

?

转自:http://zhidao.baidu.com/question/281970379.html

?

构造、析构顺序:

?

(1)首先调用基类构造函数;

(2)调用成员对象的构造函数;

(3)自己的构造函数。

析构顺序与上面严格相反!

?

const int a = 10; //编译器中怎么实现的

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

热点排行