C++基类和派生类的析构函数
2024-10-08 06:11:07
1.派生类也不能继承基类的析构函数.
2.与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉.
3.构造函数和虚构函数的执行顺序:
- 创建派生类对象时,构造函数的执行顺序和继承顺序相同,即先执行基类构造函数,再执行派生类构造函数。
- 而销毁派生类对象时,析构函数的执行顺序和继承顺序相反,即先执行派生类析构函数,再执行基类析构函数.
如下:
#include <iostream> using namespace std; class A {
public:
A();
~A();
};
A::A() { cout << "A construction" << endl; }
A::~A() { cout << "A destruction" << endl; } class B : public A {
public:
B();
~B();
};
B::B() { cout << "B construction" << endl; }
B::~B() { cout << "B destruction" << endl; } class C : public B {
public:
C();
~C();
};
C::C() { cout << "C construction" << endl; }
C::~C() { cout << "C destruction" << endl; } int main()
{
std::cout << "Hello World!\n";
C c; //先执行A的构造函数然后是B,最后为C. 析构函数则相反
return ;
}
结果:
转载来源:http://c.biancheng.net/view/2276.html
最新文章
- 【博客美化】05.添加GitHub链接
- Hive Word count
- 网站性能评分工具Yslow 使用教程
- 推荐一款开源的C#TCP通讯框架
- 使用PHP编写发红包程序
- (转)MySql开启远程连接权限
- ASP.NET MVC 数据分页思想及解决方案代码
- hadoop 环境搭建
- office如何去除多页签
- 百度富文本编辑器ueditor在jsp中的使用(ssm框架中的应用)
- ACM 阶乘数位数
- [PGM] Exact Inference for calculating marginal distribution
- [Swift]LeetCode730. 统计不同回文子字符串 | Count Different Palindromic Subsequences
- 为什么选择 Visual Studio Code
- 多个css样式合并到一个“目录”css文件中
- Rpgmakermv(14)Archeia_Steamworks
- maven项目启动报错;class path resource [com/ssm/mapping/] cannot be resolved to URL because it does not exist
- poj 1753 2965
- 安装部署Apache Hadoop (完全分布式模式并且实现NameNode HA和ResourceManager HA)
- for update 和 t.rowid的区别
热门文章
- FPM简介(定制rpm包)
- beta week 1/2 Scrum立会报告+燃尽图 01
- 从零开始のcocos2dx生活(四)ActionManager
- leetcode.769旋转字符串
- 洛谷$P$4301 $[CQOI2013]$新$Nim$游戏 线性基+博弈论
- 「学习笔记」 FHQ Treap
- Java基础知识学习(一)--引用
- oracle中使用pl/sql进行的文件读写操作
- Spring Data JPA使用findAllOrderBy时踩的坑
- ubuntu(linux)虚拟主机部署桌面,使用window链接