class Test
{
public:
Test(int i) { cout<<"constructor called\n";}
Test(const Test& t) { cout<<" copy constructor called\n";}
};
class Test1
{
public:
Test1(int i) { cout<<"constructor called\n";}
explicit Test1(const Test1& t) { cout<<" copy constructor called\n";}
};
int main()
{
Test t(0);
Test u = 0;
//Test1 t1(0); Line 1
//Test1 u1 = 0; Line 2
}
我观察到不同的输出。案例 1:当第 1 行和第 2 行被注释时,o/p 是:构造函数调用构造函数调用
情况 2:当第 1 行和第 2 行未注释时:则编译错误
有人可以解释输出及其原因。也有人可以判断 operator= 是否实际上最终调用了复制构造函数。