先上代码
class A
{
public:
A(){cout<<"构造函数"<<endl;}
~A(){cout<<"析构函数"<<endl;}
A(const A &a){cout<<"拷贝构造函数"<<endl;};
A& operator=(const A &a)
{
cout<<"赋值操作符"<<endl;
return *this;
}
};
A show(A a)
{
return a;
}
main中这样写的话
A a;
show(a);
执行一次构造函数,两次拷贝构造函数,两次析构函数。这我可以理解。但是如果这样写
A a;
A b=show(a);
执行了两次拷贝构造函数,和一次析构函数。这我有点不能理解。show函数中,不是应该产生两个临时对象么,需要两个拷贝构造函数和两次析构,再加上对b=show(a);不是一共应该有三个拷贝构造函数,两个析构函数么。。。。