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 c1;
默认的构造函数将明显调用,用于C c2 = C();
我觉得默认的构造函数会呼吁初始化一个临时对象ct,那么复制构造函数会调用初始化c2,看来我错了。为什么?
关键词:返回值优化,复制elision。 –
因为编译器比你想象的更聪明。 –
关键字:*值初始化*,*复制初始化*。 – juanchopanza