对于在堆栈上声明的对象,是否自动调用对象析构函数

时间:2015-11-06 13:21:02

标签: c++ oop

我正在努力克服C ++中对象内存分配的一些概念。

假设我们有一个班级:

class Foo {
    public:
        Foo();
        ~Foo() {
            delete bar;
        }

    private:
        int* bar = new int(5); //Dynamically allocated with 'new'
}

..我们像这样实例化这个类:

int main(void) {
    Foo f1(); //Automatically allocated

    return 0;
}

..我想知道的是,在执行main()函数之后,是否调用了对象析构函数,从而为bar变量释放了动态分配的内存?

如果没有,如何在不能调用delete f1;的情况下释放该内存?那么我们是否总是需要为一个对象动态分配内存,以便能够为该对象调用delete?例如:

int main(void) {
    Foo f1 = new Foo(5); //Dynamically allocated with 'new'

    delete f1; //Releases 'bar' memory by calling destructor

    return 0;
}

非常感谢任何信息!

0 个答案:

没有答案