【发布时间】:2020-08-10 19:27:43
【问题描述】:
我正在学习类,C++ Primer 一书的第 7.1.4 章说:
编译器生成的构造函数被称为综合默认值 构造函数。对于大多数类,这个合成的构造函数 初始化类的每个数据成员如下:
- 如果存在类内初始化程序(第 2.6.1 节,第 73 页),请使用它来初始化成员。
- 否则,默认初始化(第 2.2.1 节,第 43 页)成员。
如果类成员已经有一个类内初始化器,为什么这个合成的默认构造器会再次初始化它们?另外,我认为初始化是一件只能发生一次的事情。以上建议成员被初始化两次,一次显式,一次由合成的默认构造函数隐式初始化。
【问题讨论】:
-
它不会再次初始化它们。它使用类内初始化器来初始化类的成员变量。
-
构造函数初始化所有成员数据。类内初始化器描述如何初始化成员,但它自己不做任何事情。构造函数使用它来初始化相应的成员。
标签: c++