在函数终止后,为什么C ++本地对象不能释放?

时间:2015-10-18 01:32:04

标签: c++

class MyClass 
{
private:
    int color;
    string name;
public:
    MyClass(int co, string n) :
            name(n), color(co) 
    {
        cout << "MyClass created" << endl;
    }
    ~MyClass() 
    {
        cout << "MyClass is deleted" << endl;
    }
    string getName() 
    {
        return this->name;
    }
};


MyClass func() 
{
    MyClass c(0, "test");
    return c;
}

int main() 
{
    MyClass cls = func();
   cout << cls.getName() << endl;
}

输出:

MyClass created
test
MyClass is deleted

您好,我知道在C语言中无法从函数调用中获取局部变量的地址(即 - 通过调用另一个函数并返回,无法在堆栈上初始化一个int数组它)。

我注意到在C ++中有些不同; 我创建了一个对象的实例而没有使用运算符new,在main函数之外,然后将它返回到main函数,它就像我在main中初始化一样。有人可以解释为什么对象实例的地址在创建它的函数终止之后没有释放吗?

(我希望在func终止时删除MyClass实例 - No&#34; test&#34;在输出上)

提前感谢你

0 个答案:

没有答案