构造和析构的次序
构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成 员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编 译器将无法自动执行析构过程。
一个有趣的现象是,成员对象初始化的次序完全不受它们在初始化表中次序的影响 , 只由成员对象在类中声明的次序决定。
这是因为类的声明是唯一的,而类的构造函数可 以有多个,因此会有多个不同次序的初始化表。如果成员对象按照初始化表的次序进行 构造,这将导致析构函数无法得到唯一的逆序。
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]<<" "; 17 } 18 cout<<endl; 19 return 0; 20 }