在 cpp 中,我们可以将原始数据类型初始化为
int a(32);
这个构造函数初始化是如何工作的?C++ 是否将其视为对象?
最好的描述如下:
C++03 8.5 初始化器
第 12 和 13 段:
.......
在 new 表达式 (5.3.4)、static_cast 表达式 (5.2.9)、函数符号类型转换 (5.2.3) 以及基类和成员初始化程序 (12.6.2) 中发生的初始化被调用
直接初始化,等价于形式Tx(a);
如果 T 是标量类型,则声明形式为
T x = { a };
相当于
T x = a;
在问题中,类型是int
标量类型。
这就是所谓的直接初始化。在 C++ 中,整数不是对象,您在此处编写的表达式也不是构造函数。它只是将 a 初始化为 32 的值。