构造和析构的次序

构造和析构的次序

构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成 员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编 译器将无法自动执行析构过程。

一个有趣的现象是,成员对象初始化的次序完全不受它们在初始化表中次序的影响 , 只由成员对象在类中声明的次序决定。

这是因为类的声明是唯一的,而类的构造函数可 以有多个,因此会有多个不同次序的初始化表。如果成员对象按照初始化表的次序进行 构造,这将导致析构函数无法得到唯一的逆序。

 1 #include <iostream>
 2 
 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 4 using namespace std;
 5 int main(int argc, char** argv) {
 6      //自定义类型 
 7     typedef  int  ARRAY_INT[50];
 8     int i;
 9     ARRAY_INT a;    //用自定义类型声明数组变量a 
10 
11     //以下为数组a赋值,并打印  
12     for (i=0;i<50;i++) {
13        if (i%10==0)       //每10个数换一次行 
14          cout<<endl;
15        a[i]=i;
16        cout<<a[i]<<"\t";
17      }
18     cout<<endl;
19     return 0;
20 }

 

posted @ 2018-08-02 12:59  borter  阅读(266)  评论(0编辑  收藏  举报