class Sample{
int x;
public:
Sample(){ } // Default Constructor
Sample(const Sample &obj){ // Copy Constructor
cout << "Copy Constructor Called\n";
x = obj.x;
}
~Sample(){ // Destructor
cout << "Destructor Called\n";
}
};
Sample fun(){
cout << "Fun Called\n";
Sample temp;
return temp;
}
现在,在main中调用fun函数时,我有些困惑。
int main()
{
Sample t=fun();
cout << "a----------------------------------------a" <<endl;
return 0;
}
我希望输出为:
有趣的呼叫。
调用的析构函数 //在函数fun()中创建的临时对象的析构函数。
调用的复制构造方法 //在main()中初始化对象t。
a ---------------------------------------- a
调用的析构函数 // main()中t对象的析构函数。
但是输出是:
有趣的呼叫
a ---------------------------------------- a
调用了析构函数
这非常令人困惑。 感谢您的帮助。