替换对象时调用析构函数

Calling destructor when replacing object

本文关键字:析构函数 调用 对象 替换      更新时间:2023-10-16

我有一个保存对象的变量。现在我为这个变量分配了一个不同的对象。原始对象是否会被销毁,何时销毁?示例函数:

{
    myclass a();
    myclass b(); //create 2 objects
    a = b; //copy b
} //leave scope, both copies of b will be destructed

原始对象是否会被破坏

是的。所有自动变量都会自动销毁。

什么时候?

自动变量在作用域结束时销毁。

替换对象时

赋值不会"替换"分配的对象。赋值设置对象的值。


附言在示例代码中,您没有对象。您已经声明了两个函数并尝试分配其中一个函数(分配函数格式不正确(。

您的对象将在作用域结束时销毁。当你将b赋值给a时(假设对象被正确声明,我的意思是只使用myclass a;不带大括号(,a不会被破坏,只是它的值会被改变。此外,还需要重载赋值运算符。