C++ 继承: 父类与子类构造函数与析构函数的关系

一句话:调用子类构造函数时,父类的先调用,然后调用子类的构造函数。调用子类的析构函数时,先调用子类的析构函数,然后调用父类的析构函数。

例:点类,点派生的圆类

Circle.h

#ifndef CIRCLE_H_INCLUDED
#define CIRCLE_H_INCLUDED#include "Point.h"class Circle : public Point
{public:Circle();Circle(int x, int y, int r);~Circle();void setRadius(int r);int getRadius();void printCircle();private:int radius;
};#endif // CIRCLE_H_INCLUDED

Circle.cpp

#include <iostream>
#include "Point.h"
#include "Circle.h"using namespace std;Circle::Circle():Point()
{cout << "circle 调用构造函数" << endl;setRadius(0);
}
Circle::Circle(int x, int y, int r):Point(x, y)
{cout << "circle 调用构造函数" << endl;setRadius(r);
}
Circle::~Circle()
{cout << "circle 调用析构函数" << endl;
}void Circle::setRadius(int r)
{radius=r;
}int Circle::getRadius()
{return radius;
}void Circle::printCircle()
{Point::printPoint();cout << "Radis: " << getRadius() << endl;
}

Point.h

#include <iostream>
#include "Point.h"
#include "Circle.h"using namespace std;Circle::Circle():Point()
{cout << "circle 调用构造函数" << endl;setRadius(0);
}
Circle::Circle(int x, int y, int r):Point(x, y)
{cout << "circle 调用构造函数" << endl;setRadius(r);
}
Circle::~Circle()
{cout << "circle 调用析构函数" << endl;
}void Circle::setRadius(int r)
{radius=r;
}int Circle::getRadius()
{return radius;
}void Circle::printCircle()
{Point::printPoint();cout << "Radis: " << getRadius() << endl;
}

C++ 继承: 父类与子类构造函数与析构函数的关系相关推荐

  1. java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题

    Java子类在实例化时默认调用的是父类的无参构造函数,不论实例化时调用的是子类的有参还是无参构造函数, 1.当父类没有显式定义构造方法时, 编辑器会默认为此类添加一个隐式无参构造函数.此时子类可以有自 ...

  2. php继承时父类与子类构造函数的优先问题

    php类在继承时父类与子类构造函数的优先问题可以归纳如下: 父类有构造函数,子类没有,在实例化子类时,会调用父类构造方法, 父类有构造函数,子类也有,在实例化子类时,会调用子类构造方法, <?p ...

  3. A 子类继承父类,子类的构造函数会覆盖父类的构造函数

    //子类 没有定义 构造 函数时,默认继承父类的构造方法:输出结果为 Class A... // 子类 定义了 构造 函数时,就不会继承父类的构造方法:输出结果是  Class B... <?p ...

  4. 接口抽象类继承父类和子类

    1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...

  5. C++继承中关于子类构造函数的写法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  6. C++ 单继承 父类和子类

    1.如果派生类的继承方式为public,则这样的派生类称为基类的子类: 2. C++ 允许父类指针指向子类对象,父类引用子类对象,无须通过强制类型转换保持赋值类型相容,因为子类对象isa父类对象,编译 ...

  7. java子类继承父类_子类可以继承父类的什么

    展开全部 子类可以获得除private权限以外的所有父类属性,但是: 1.在子类继承62616964757a686964616fe58685e5aeb931333431343130父类的时候,子类必须 ...

  8. C++:39---继承中构造函数、析构函数的关系

    一.继承中构造函数的关系 如果父类没有构造函数,则子类初始化时不需要构造父类 如果父类有构造函数,则子类初始化自己的构造函数时,要先初始化父类的构造函数 基类的构造函数必须在派生类的构造函数初始化列表 ...

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

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

最新文章

  1. 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...
  2. 《深入理解Hadoop(原书第2版)》——1.3大数据的编程模型
  3. Caused by: java.lang.ClassNotFoundException: Didn't find class android.support.v4.view.ViewPager
  4. angular select设置默认选中_技术分享 | Charset 和 Collat??ion 设置对 MySQL 性能的影响...
  5. Linux网络编程 之 UDP编程(六)
  6. windows2008 sp2 x64安装 ocs 2007 r2 笔记
  7. Redis集群明细文档(转)
  8. [luogu1373]小a和uim之大逃离_动态规划
  9. Spring Cloud Hystrix服务容错 (学习总结)
  10. 【word论文排版教程4】样式的应用
  11. javashop B2C开源电商系统源代码
  12. AI上推荐 之 FM和FFM(九九归一)
  13. Verilog 锁存器 触发器 寄存器区别
  14. 评副高考计算机英语能加分吗,19类人员评副高以下职称时不用再考外语
  15. 关于Html class id 命名规范
  16. 智安荣誉丨智安【一站式等保云平台】荣获第六届“创客中国”网络安全中小企业创新创业大赛优胜奖!
  17. 基于VMware12虚拟机的Hadoop3.1.2伪分布式安装(含各软件百度云下载地址、安装过程中各类问题的解决方案)
  18. MII,RMII,GMII接口详细介绍
  19. ubuntu如何卸载软件
  20. REINFORCE和A2C的异同

热门文章

  1. 计算机网络技术入学要求,诺森比亚大学计算机网络技术理科硕士入学条件及实习就业...
  2. CAD如何进行连续标注并对齐标注?
  3. CUDA生态和ROCm生态对比分析
  4. 物联网智能办公解决方案成为必然趋势
  5. 百度_右玉吧吧_史上最厉害的拼音打字高手间的对话
  6. 计算机领域的经典教材有哪些?
  7. 致远个性化之--明细表数据重复判断,并显示重复数据
  8. 移动阅读APP开发功能有哪些?
  9. 理解SIP re-INVITE
  10. 0x77edd7fc (mfc100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突