2016-03-08 25 views
6
#include<iostream> 
using namespace std; 

class C{ 
private: 
    int value; 
public: 
    C(){ 
     value = 0; 
     cout<<"default constructor"<<endl; 
    } 
    C(const C& c){ 
     value = c.value; 
     cout<<"copy constructor"<<endl; 
    } 
}; 
int main(){ 
    C c1; 
    C c2 = C(); 
} 

输出C c有没有区别;和C c = C();?

默认构造函数

默认构造函数

问题

对于C c1;默认的构造函数将明显调用,用于C c2 = C();我觉得默认的构造函数会呼吁初始化一个临时对象ct,那么复制构造函数会调用初始化c2,看来我错了。为什么?

+5

关键词:返回值优化,复制elision。 –

+3

因为编译器比你想象的更聪明。 –

+0

关键字:*值初始化*,*复制初始化*。 – juanchopanza

回答