什么时候调用析构函数?

时间:2019-09-14 16:33:35

标签: c++ oop destructor

   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

调用了析构函数

这非常令人困惑。 感谢您的帮助。

0 个答案:

没有答案