C++构造和析构的顺序
C++构造函数和析构函数的顺序
#include <iostream>
using namespace std;
class CA {
public:
CA() { cout << "CA()" << endl; }
~CA() { cout << "~CA()" << endl; }
};
class CB : public CA {
public:
CB() { cout << "CB()" << endl; }
~CB() { cout << "~CB()" << endl; }
};
int main() {
cout << "Hello, World!" << endl;
CB b;
return 0;
}
输出:
Hello, World!
CA()
CB()
~CB()
~CA()
子类构造顺序:父类构造->子类有构造
子类析构顺序:子类析构->父类析构
孙子类的构造和析构过程, 上代码:
#include <iostream>
using namespace std;
class CA {
public:
CA() { cout << "CA()" << endl; }
~CA() { cout << "~CA()" << endl; }
};class CB : public CA {
public:
CB() { cout << "CB()" << endl; }
~CB() { cout << "~CB()" << endl; }
};class CC : public CB {
public:
CC() { cout << "CC()" << endl; }
~CC() { cout << "~CC()" << endl; }
};int main() {
cout << "Hello, World!" << endl;
//CB b;
CC c;return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
输出:Hello, World!
CA()
CB()
CC()
~CC()
~CB()
~CA()
总结:孙子类的构造过程: 爷类构造->父类构造-孙子类构造
孙子类的析构过程: 孙子类析构->父类析构->爷类析构
---------------------
作者:robertkun
来源:CSDN
原文:https://blog.csdn.net/robertkun/article/details/79202490
版权声明:本文为博主原创文章,转载请附上博文链接!
C++构造和析构的顺序的更多相关文章
- C++语法小记---继承中的构造和析构顺序
继承中构造和析构的顺序 先父母,后客人,最后自己 静态变量和全局变量在最开始 析构和构造的顺序完全相反 #include <iostream> #include <string> ...
- C++系列总结——构造与析构
前言 在使用资源前,我们需要做一些准备工作保证资源能正常使用,在使用完资源后,我们需要做一些扫尾工作保证资源没有泄露,这就是构造与析构了,这和编程语言是无关的,而是使用资源的一种方式.C++只不过是把 ...
- C++回顾day02---<对象构造和析构,外加友元函数>
一:若没有显示写构造函数,默认会有一个默认构造函数(无参),若自己构造后,不会存在这个默认构造函数 二:类成员若是有const修饰,必须在对象初始化的时候,为该类成员赋值(或者一开始就定死,同C中) ...
- C++浅析——继承类中构造和析构顺序
先看测试代码,CTEST 继承自CBase,并包含一个CMember成员对象: static int nIndex = 1; class CMember { public: CMember() { p ...
- C++类构造析构调用顺序训练(复习专用)
//对象做函数参数 //1 研究拷贝构造 //2 研究构造函数,析构函数的调用顺序 //总结 构造和析构的调用顺序 #include "iostream" using namesp ...
- 再探Delphi2010 Class的构造和析构顺序
发了上一篇博客.盒子上有朋友认为Class的构造和析构延迟加载.是在Unit的初始化后调用的Class的构造.在Unit的反初始化前调用的Class的析构函数. 为了证明一下我又做了个试验 unit ...
- C++ 类成员的构造和析构顺序
我想对面向对象有了解的童鞋应该不会对类和对象感到陌生吧 ! 对象并不是突然建立起来的,创建对象必须时必须同时创建父类以及包含于其中的对象.C++遵循如下的创建顺序: (1)如果某个类具体基类,执行基类 ...
- C++ //继承中构造和析构顺序
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...
- 【C++】类和对象(构造与析构)
类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...
随机推荐
- Spring 学习记录7 初识XmlWebApplicationContext
主题 之前Spring相关的一些类,比如Enviromnent,BenFactory都接触了一些.有一些收获.但是直接看代码很多方法都不知为什么这样写.哪里会用到.因为太底层了.不好理解..现在从高层 ...
- 什么是web资源????
所谓 web 资源即放在 Internet 网上供外界访问的文件或程序,又根据它们呈现的效果及原理不同,将它们划分为静态资源和动态资源. 1. 什么是静态资源 静态资源是浏览器能够直接打开的,一个 j ...
- PHP获取页面执行时间的方法(推荐)
一些循环代码,有时候要知道页面执行的时间,可以添加以下几行代码到页面头部和尾部: 头部:$stime=microtime(true); 尾部: $etime=microtime(true);//获取程 ...
- linux tar 压缩
压缩文件 tar -czvf xxx.tar.gz yourdict 解压文件 tar xzf aa.tar.gz
- mysql的my.ini配置文件
第一步,我们找到mysql安装文件下面的my.ini文件,打开可以看到第一句: # MySQL Server Instance Configuration File Mysql服务实例配置文件 好,咱 ...
- Android中自定义ListView实现上拉加载更多和下拉刷新
ListView是Android中一个功能强大而且很常用的控件,在很多App中都有ListView的下拉刷新数据和上拉加载更多这个功能.这里我就简单记录一下实现过程. 实现这个功能的方法不止一个,Gi ...
- JAVA中List的几个方法
add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码: public static ...
- JAVA中的数组对象
代码:Student [] sd=new Student[5];//新建一个学生类的数组对象sd. sd[0]=new Student("kj",13);//为数组对 ...
- cf478B-Random Teams 【排列组合】
http://codeforces.com/problemset/problem/478/B B. Random Teams n participants of the competition w ...
- eclipse 使用 scons 编译的配置说明
eclipse版本: eclipse-cpp-kepler-SR1-win32.zip 创建项目必须选择“Makefile Project” 然后进入“Projects Properities” 先 ...