C++构造函数称为预初始化
Are C++ constructors called pre-initialization?
假设我们声明A
为类型Type
:
Type A;
问题:此时是否调用A
的Type
构造函数?还是只有在我们初始化A
之后才调用构造函数?
此时是否调用了 A 的类型构造函数?还是只有在我们初始化 A 之后才调用构造函数?
您在此处初始化A
,无论您是否为该进程显式提供了值。
没有机会在"以后"初始化A
;您只能在以后分配给它。(早期的C文本在声明很久之后谈论"初始化"数值,但这是一种不同的语言,不同的世纪和一组不同的描述性习语。
所以,是的,构造函数在对象的生存期开始后立即调用。要么就在那里,然后,在那一行,要么如果是一个类成员,那么当然是初始化封装类的时候,轮到这个成员了。
当然,你可以用一个简单的std::cout
对来证明这一点。
是的,它会立即调用。 当您为其赋值时,将改为调用赋值运算符。
唯一的例外是:
Type a = value;
在这里,一些具有某些设置的编译器可能会放宽它,并使用值作为参数直接调用构造函数。但它仍然需要成为宣言的一部分。
相关文章:
- 为什么std::vector和std::valarray初始化构造函数不同
- 初始化构造函数C++中结构的向量
- C++ 中常量属性的初始化构造函数错误
- 不正确的输出和变量未用Eclipse CDT初始化构造函数
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- 如何通过参数初始化构造函数中的数组?
- 是否有理由使用 malloc 初始化构造函数中的指针
- 如何在 c++ 中初始化构造函数中的二维数组
- 为什么初始化构造函数列表参数时会发生异常?
- 无法初始化构造函数
- 初始化构造函数的默认参数的优选方法是什么?
- 在C++17中使用空列表初始化构造函数时发生编译错误
- C++ 初始化构造函数初始化列表中的嵌套结构?
- 初始化构造函数c++中的向量
- g++ (GCC) 4.6.0 我有以下类,我正在尝试初始化构造函数的结构成员初始化列表
- 使用字符串文本初始化构造函数中的 std::array<char,x> 成员。海湾合作委员会错误?
- 初始化构造函数C++中函数的成员指针
- 在c++中初始化构造函数中的静态成员变量时出错
- memset()初始化构造函数中的对象
- 初始化构造函数C++中的成员向量