如下代码及解释,但是实际运行未打印"copy"?
class CExample
{
private:
int a;
public:
//构造函数
CExample(int b)
{
a = b;
}
//拷贝构造
CExample(const CExample& C)
{
a = C.a;
cout<<"copy"<<endl;
}
void Show ()
{
cout<<a<<endl;
}
};
//全局函数
CExample g_Fun()
{
CExample temp(0);
return temp;
}
int main()
{
g_Fun();
return 0;
}
当g_Fun()函数执行到return时,会产生以下几个重要步骤:
(1).先会产生一个临时变量,就叫XXXX吧。
(2).然后调用拷贝构造函数把temp的值给XXXX。整个这两个步骤有点像:CExampleXXXX(temp);
(3).在函数执行到最后先析构temp局部变量。
(4).等g_Fun()执行完后再析构掉XXXX对象。