#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();
,我认为会调用默认构造函数来初始化临时对象,然后调用复制构造函数来初始化c2,但事实证明我错了。为什么?