我的代码是
class CTemp{
public:
CTemp(){
printf("\nIn cons");
}
~CTemp(){
printf("\nIn dest");
}
};
void Dowork(CTemp obj)
{
printf("\nDo work");
}
int main()
{
CTemp * obj = new CTemp();
Dowork(*obj);
delete obj;
return 0;
}
我得到的输出是
In cons
Do work
In dest
In dest
现在为什么构造函数被调用一次而析构函数被调用两次呢?有人可以解释一下吗?
void Dowork(CTemp obj)
此处将完成本地复制,退出DoWork
功能范围后将对其进行销毁,这就是为什么您会看到destructor-call的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句