码迷,mamicode.com
首页 > 其他好文 > 详细

构造和析构的次序

时间:2018-08-02 13:56:51      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:you   ret   space   namespace   NPU   ace   开始   loop   return   

构造和析构的次序

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

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

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

 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 }

 

构造和析构的次序

标签:you   ret   space   namespace   NPU   ace   开始   loop   return   

原文地址:https://www.cnblogs.com/borter/p/9406551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!