简介:栈区对象由系统自动释放,但堆区(动态内存建立的对象)对象由程序员自己手动释放。因此,建立一个对象,由于它所建立的方式,即栈区建立或则堆区建立,导致其对象的构造析构顺序不同。
代码学习区:
//只需要给出实体对象,自动调用构造函数。 //栈区的对象,先构造的后析构,后构造的先析构。 //堆区的对象,先构造的先析构,后构造的后析构。 #include<iostream> using namespace std; class A{ public: A(){ cout << "A()" << endl; } ~A(){ cout << "~A()" << endl; } }; class B{ public: B(){ cout << "B()" << endl; } ~B(){ cout << "~B()" << endl; } }; int main(){ cout << "栈区对象析构顺序:" << endl; A a;//栈区建立对象 B b; cout << "----------------------" << endl; cout << "堆区对象析构顺序:" << endl; A *pa = new A;//堆区建立对象 B *pb = new B; delete pa; delete pb; cout << "----------------------" << endl; return 0; }
运行结果: