<分区>
据我所知在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
这里到底发生了什么?或者如果涉及原始/标量类型并且所有都是语法糖,则没有区别。类似的问题并不能完全为我解释。