什么是这种初始化和赋值?

时间:2016-10-15 13:17:37

标签: c++ initialization variable-assignment

我知道这个

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};

2 个答案:

答案 0 :(得分:2)

有关

int value5 = (3);

copy initialization

  

T object = other; (1)

     

1)当声明非引用类型T的命名变量(自动,静态或线程局部)时,初始化器由等号后跟表达式组成。

<小时/> 为:

value5 = (4);
value5 = {5};

它的直接任务。

Assignment operators

  

复制赋值运算符用b的内容副本替换对象a的内容(b未被修改)。对于类类型,这是一个特殊的成员函数,在复制赋值运算符中描述。

     

对于非类类型,复制和移动赋值是无法区分的,称为直接赋值。

答案 1 :(得分:-2)

int value5 = (3);value5 = (4);仍然是副本分配,因为右侧只是分别评估为34

另一方面,value5 = {5};是复制初始化列表。