在C++中使用构造函数

Ama*_*mar 12 c++ constructor

关于在C++中使用构造函数,这是一个非常简单的问题.我将以面试对话的形式呈现(很难以任何其他形式呈现)

面试官 -什么是构造函数?
me -构造函数是特殊函数,它确保在使用之前初始化所有对象.

面试官 -什么是初始化者列表?
我 -这是一个所有初始化发生的列表.只有在初始化了所有数据成员或者调用了所有成员对象的某些构造函数后,才会输入构造函数的主体.

访问者 -这意味着初始化在初始化列表中执行,而不是在构造函数内部.但是你说构造函数初始化了对象!不是吗?你想回答我的第一个问题吗?
我 -我认为构造函数执行赋值,它在已初始化的成员对象上调用赋值运算符.

所以我的问题可以是你

初始化列表如何工作

函数的起始地址和起始大括号[{]之间有什么关系?

或者只是回答我如何说服我的面试官.

Lig*_*ica 7

从技术上讲,您的解释是准确的.没有成员可以从ctor身体内部初始化; 只在ctor-initializer.ctor正文中的任何成员访问权限只能是作业.

在输入ctor正文之前,所有成员都被"初始化" .

然而,更广泛地说,因为正文总是跟随初始化器,所以说 - 作为一个单元 - 一旦构造函数结束,对象就被初始化了......包括正文.

部分原因是,从广义上讲,您可能会考虑初始化以包含您必须在您的ctor身体中执行的一些业务逻辑,即使这与数据成员的实际初始化不同.

  • @logic:`b`在括号前初始化*.在那之后,它只是一个对齐. (2认同)

Nic*_*las 5

你想多了,让面试官把你弄糊涂了。

初始化对象的成员是一样的东西初始化对象本身。仅仅因为成员具有合理的值并不意味着对象已经被构造。在构造函数完成之前,对象本身还没有被正确初始化。