派生类继承了基类的成员,实现了代码的重复利用,但基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数。同样派生类也需要添加析构函数来实现一些结束工作。
当创建对象时,编译系统会自动调用构造函数。当撤销对象时,编译系统会自动调用析构函数。当创建派生类的对象时,首先执行基类的构造函数,然后执行派生类的构造函数。当撤销对象时,则先执行派生类的析构函数,然后再执行基类的析构函数。
例子:
#include"iostream.h"    
class A     //定义一个类    
{    
public:
A()        //类的构造函数            
{
cout<<"基类的构造函数"<<endl;
}            
~A()     //类的析构函数            
{
cout<<"基类的析构函数"<<endl;
}    
};    
class B:public A    //派生类    
{    
public:            
B()                    //派生类的构造函数            
{
cout<<"派生类的构造函数"<<endl;
}            
~B()                 //派生类的析构函数            
{
cout<<"派生类的析构函数"<<endl;
}; 
void main() 
{
B p;                //派生类的对象    
}
输出:
基类的构造函数
派生类的构造函数
派生类的析构函数
基类的析构函数

当类内包含其他对象时,将这个类对象叫做内含类对象,该对象的初始化工作必须放在构造函数的初始化列表中,内含类对象和包含它的类对象的构造函数顺序是:先是内含类的构造函数,然后是外部类的构造函数

转载于:https://blog.51cto.com/luisliu/226618

派生类构造函数和析构函数的执行顺序相关推荐

  1. C++类继承时构造函数与析构函数的执行顺序

    C++类继承时构造函数与析构函数的执行顺序 在C++类中,类A继承类B时,如果创建一个A的对象时,会首先调用基类的构造函数,再调用派生类的构造函数,而析构函数的执行相反,但是当基类和派生类分别有一个成 ...

  2. 多重继承的构造函数和析构函数的执行顺序(包含虚基类)

    下面示例就是说明多重继承析构函数和构造函数的执行顺序: #include <iostream> using namespace std;class A {public:A(int i){c ...

  3. 详解派生类构造函数与析构函数

    1.派生类构造函数: 派生类不能继承基类的构造函数,必须自己定义构造函数进行新增数据成员初始化工作,如果想同时初始化基类数据成员,必须调用基类构造函数. (1)简单派生类构造函数: 1 #includ ...

  4. c++中的派生类构造函数和析构函数

    1.派生类构造函数 派生类的构造函数必须自己定义,因为要对新增数据成员进行初始化.如果想要同时初始化基类的数据成员,必须调用基类的构造函数. 创建一个派生类对象的时候,首先调用基类的构造函数,再调用派 ...

  5. 一文读懂C#中的抽象类、抽象方法、virtual虚函数、override重写函数及父类子类构造函数和析构函数的执行顺序

    // 父类 class People {public People(){Console.WriteLine("执行People构造函数!");}public virtual voi ...

  6. C++类引用中的构造函数与析构函数的执行顺序练习

    引用的类比被引用的类后构造,先析构 #include <iostream> #include <string>using namespace std;class Phone { ...

  7. 派生类构造函数的执行顺序

    一个派生类构造函数的执行顺序如下: 虚拟基类的构造函数(多个虚拟基类则按照继承的顺序执行构造函数). 基类的构造函数(多个普通基类也按照继承的顺序执行构造函数). 对象的vptr被初始化: 成员对象构 ...

  8. 实验6.2 定义一个基类BaseClass,观察构造函数和析构函数的执行情况。

    题目 定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况. AC的C++代码如下: #include<iostre ...

  9. 实验3.1 定义一个CPU类,观察构造函数和析构函数的调用顺序

    题目 定义一个CPU类,包含等级(rank).频率(frequency).电压(voltage)等属性,有两个公有成员函数run.stop.其中,rank为枚举类型CPU_Rank,定义为enum C ...

最新文章

  1. NameValueCollection详解
  2. 适合python的笔记本配置-jupyter之配置自己喜欢的python环境
  3. 使用Ubuntu18.04系统做操作系统实验的步骤
  4. 如何在Ubuntu18.04安装Tesla T4板的驱动程序
  5. 问题:linux系统经常出现断网的情况,重启之后系统恢复正常
  6. oracle util_mail,在oracle 10g中发送电子邮件
  7. ubuntu linux mac地址,Ubuntu下修改mac地址
  8. android 防止重复启动app,Android应用开发Android 防止启动页面(SplashActivity)被多次启动...
  9. android studio学习----通过github的URL怎么导入新的工程
  10. 全球首款5G手机来了?三星Galaxy S10 5G版或于4月5日开卖
  11. 未来五年程序员应当具备的十项技能
  12. mysql中使用case when语句
  13. HDU1171-Big Event in HDU
  14. Caffe傻瓜系列(2):视觉层(Vision Layers)及参数
  15. Java_银行排队叫号系统
  16. TinyPNG压缩图片的网站
  17. web防火墙和waf防火墙的区别和选择
  18. 记一次阿里云木马排查过程
  19. windows11 文档背景设置护眼色
  20. GitHub如何使用

热门文章

  1. iOS LaunchScreen和LaunchImage的转换启动图
  2. 【fjwc2015】世界树
  3. 2-4. BCD解密(10)
  4. Struts 2+Spring 3+Hibernate 3.3 在MyEclipse 10环境下的整合配置
  5. Flash as3 以鼠标点为中心缩放效果
  6. 这些个JAVA开源工具(那是相当地多啊)
  7. 从SQL Server 2000/2005到SQL Server 2008的升级测试
  8. 可以弹的钢琴,很不错(转)
  9. 开发者和程序员需要关注的42个播客
  10. AndroidStudio设置背景颜色,字体大小,默认显示行号