2

据我所知,C++ 是形式的初始化

T x = a;

称为复制初始化和形式的初始化

T x(a);

或者

T x{a};

称为直接初始化

(T...类型,x...变量名,a...表达式)

对于类类型,我认为区别很明显(在复制初始化的情况下调用复制构造函数)。

但是如果使用像 int 这样的原始(标量)类型呢?因为 int 类型没有(复制)构造函数,所以应该调用哪个构造函数

int x = 5; // copy-initialization

那么有区别吗?

int x = 5; // copy-initialization of variable x
int x = {5}; // copy-initialization of variable x
int x(5); // direct-initialization of variable x
int x{5}; // direct-initialization of variable x

这里到底发生了什么?或者,如果涉及原始/标量类型并且都是语法糖,那么没有区别。类似的问题并不能完全为我解释。

4

1 回答 1

1

像这样的原始标量没有区别;内存位置或寄存器(取决于使用情况)将以相同的方式初始化。

于 2019-09-03T12:24:16.743 回答