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