我知道这个
int value1 = 1; // is copy initialization
double value2(2.2); // is direct initialization
char value3 {'c'}; // is uniform initialization
int value4 = {5}; // is initializer list
value4 = 6; // is copy assignment
我只是好奇,这叫做什么?
int value5 = (3);
value5 = (4);
value5 = {5};
答案 0 :(得分:2)
有关
int value5 = (3);
T object = other; (1)
1)当声明非引用类型T的命名变量(自动,静态或线程局部)时,初始化器由等号后跟表达式组成。
<小时/> 为:
value5 = (4);
value5 = {5};
它的直接任务。
复制赋值运算符用b的内容副本替换对象a的内容(b未被修改)。对于类类型,这是一个特殊的成员函数,在复制赋值运算符中描述。
对于非类类型,复制和移动赋值是无法区分的,称为直接赋值。
答案 1 :(得分:-2)
int value5 = (3);
和value5 = (4);
仍然是副本分配,因为右侧只是分别评估为3
和4
。
另一方面,value5 = {5};
是复制初始化列表。