C++的对象数组
顾名思义,即是存储对象的数组。比如有一个对象A,实例化为对象数组有如下两种方式:
A a[3]; //第一种方法,在栈空间中占用内存A *a = new A[3];//第二种方法,在堆空间中分配空间
对象数组调用构造函数及析构函数
例子1
class A {public:A() {cout << "A()" << endl; }~A() {cout << "~A()" << endl; }};int main(){A a[3];//定义了对象数组return 0;}
输出:
A()A()A()~A()~A()~A()
例子2
class A {public:A() {cout << "A()" << endl; }~A() {cout << "~A()" << endl; }};int main(){A *p=new A[3];return 0;}
输出:
A()A()A()
new操作是在堆空间申请堆内存,所以需要程序员手动释放,如果添加手动释放的代码,则会打印析构函数函数的调用
class A {public:A() {cout << "A()" << endl; }~A() {cout << "~A()" << endl; }};int main(){A *p=new A[3];delete []p;return 0;}
输出
A()A()A()~A()~A()~A()