C ++变量声明和初始化规则

时间:2010-08-03 15:51:34

标签: c++ initialization declaration

考虑以下声明和初始化C类型变量的方法:

C c1;

C c2;
c2 = C();

C c3(C());

C c4 = C();

所有这些是否完全相同,或者根据C的确切定义,其中一些是否有所不同? (假设它有公共默认值和复制构造函数)。

1 个答案:

答案 0 :(得分:10)

这些意思是:

C c1;   // default constructor

C c2;   // default constructor
c2 = C(); // default constructor followed by assignment

C c3(C());   // default constructor possibly followed by copy constructor

C c4 = C();  // default constructor possibly followed by copy constructor

请注意,编译器可以忽略复制构造函数调用。它们是等价的吗? - 好吧,这取决于复制构造函数和赋值运算符的作用。