• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++类成员构造函数和析构函数顺序示例详细讲解

C++类成员构造函数和析构函数顺序示例详细讲解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++析构函数,c++析构函数的用法,c++析构函数怎么写,c++中析构函数,c++类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

对象并不是突然建立起来的,创建对象必须时必须同时创建父类以及包含于其中的对象。C++遵循如下的创建顺序:

(1)如果某个类具体基类,执行基类的默认构造函数。

(2)类的非静态数据成员,按照声明的顺序创建。

(3)执行该类的构造函数。

即构造类时,会先构造其父类,然后创建类成员,最后调用本身的构造函数。

下面看一个例子吧

class b
{
public:
    b(){ printf("b\n");}
protected:
    c C;
private:
};

class a : public b
{
public:
    a(){ printf("a\n"); }
protected:
private:
};

int main()
{
    a A;
    getchar();
}
</div>

分析一下吧  首先定义了3个类 a b c,其中a继承自b ,在main函数里面构造a ,因为a是继承b ,所以会先构造b,然后b类又有一个成员c类,所以c类是最先构造的,然后是b ,最后才是a。

在看一个例子,就是上面的该了一下:

class b
{
public:
    b(){ printf("b\n");}
protected:
private:
};

class a : public b
{
public:
    a(){ printf("a\n"); }
protected:
    c C;
private:
};

int main()
{
    a A;
    getchar();
}
</div>

没有改变多少,只是在a添加了c成员,而b去掉了。

同样是在main里面构造a ,a继承自b,所以先构造b,然后构造a本身的数据成员c,最后才调用的a本身的构造函数。。

这里大家应该明白构造的细节了吧 。。

接下来看析构的顺序:

(1)调用类的析构函数。

(2)销毁数据成员,与创建的顺序相反。

(3)如果有父类,调用父类的析构函数。

也看一个例子吧:

class b
{
public:
    b(){}
    ~b(){ printf("b\n");}
protected:
private:
};

class a : public b
{
public:
    a(){}
    ~a(){ printf("a\n"); }
protected:
    c C;
private:
};

int main()
{
    a A;
    return 0;
}
</div>

其过程是,在main函数结束时,会销毁a,就会先调用a的析构函数,先后销毁a的数据成员c,最后销毁a的父类b。其实就是跟创建时的顺序反了过来。

好了,到这里相信大家已经明白构造析构的奥秘了吧!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++构造函数和析构函数的调用顺序
  • C++中构造函数与析构函数的调用顺序详解
  • C++中的friend函数详细解析
  • 简单解读C++中的虚函数
  • 详解C++中如何将构造函数或析构函数的访问权限定为private
  • 浅谈C++基类的析构函数为虚函数
  • 简单介绍C++编程中派生类的析构函数
  • 详解C++编程中的析构函数
  • C++中函数的用法小结
  • C++类成员构造函数和析构函数顺序示例详细讲解

相关文章

  • 2017-05-28探讨:C++实现链式二叉树(用非递归方式先序,中序,后序遍历二叉树)
  • 2017-05-28整理C语言中各种类型指针的特性与用法
  • 2017-05-28C语言中的内联函数(inline)与宏定义(#define)详细解析
  • 2017-05-28c语言求阶乘精确值示例
  • 2017-05-28C++用mysql自带的头文件连接数据库
  • 2017-05-28如何求连续几个数之和的最大值
  • 2017-05-28C语言 以数据块的形式读写文件详解及实现代码
  • 2017-05-28常用排序算法整理分享(快速排序算法、希尔排序)
  • 2017-05-28C语言中基础小问题详细介绍
  • 2017-05-28详解C语言中accept()函数和shutdown()函数的使用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言编写获取Linux本地目录及本机信息的小程序实例
    • C语言中的强符号和弱符号介绍
    • 简单介绍C语言中的umask()函数和truncate()函数
    • 深入C语言内存区域分配(进程的各个段)详解
    • C语言中获取和改变目录的相关函数总结
    • C++遍历文件夹获取文件列表
    • C++ 成员变量的初始化顺序问题详解
    • 解析C++ 浮点数的格式化显示
    • C++ auto类型说明符
    • C++映像劫持后门实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有