C++ 构造和析构

摘要:
b、 组合破坏方法:按创建的相反顺序撤销每个非静态成员。如果成员是类类型,则调用该成员的销毁方法来撤销对象。

1、继承关系可认为,子类在父类的基础上进行。从这个角度讲,可把它认为穿衣脱衣的过程。穿衣是:先穿内衣,再穿外套。脱衣是:先脱外套,在脱内衣。构造是:先调用父类构造方法,再调用子类构造方法。析构是:先调用子类析构方法,再调用父类析构方法。

2、构造可分为两个步骤:初始化列表和方法内赋值。前者的使用场景是:初始化,即copy构造。后者的使用场景是:赋值,即copy赋值。

  a、对于类类型,如果没有在初始化列表中显式初始化,会进行隐式初始化,调用默认构造方法。因此,没有默认构造方法的类成员,必须显式初始化。

  b、对于基本类型,如果没有在初始化列表中显式初始化,不会进行隐式初始化。初始值依赖于对象的作用域:局部对象不被初始化,为0xcccccccc(并不是初始化为随机值),全局对象初始值为0。

  c、在初始化列表或者赋值阶段,都可以达到同样的效果。但是,对于类类型,如果在赋值阶段进行,相当于执行了一次copy构造(调用默认构造方法),一次copy赋值,因此,对于类类型,应该使用初始化列表,效率高。对于基本类型,因为没有隐式初始化,在初始化列表或者赋值阶段,都是一样的。

  d、但是有三种情况必须在初始化列表中进行:d1、没有默认构造方法的类类型,因为没有显示初始化,会进行隐式初始化,调用默认构造方法,导致编译出错;d2、const对象,必须初始化;d3、引用类型,必须初始化。

  e、类成员初始化的顺序,与初始化列表中的顺序无关,而与类定义中声明的顺序相关。

3、析构可认为分为两个步骤:自定义析构方法和合成析构方法。

  a、自定义析构方法:释放获取的资源。

  b、合成析构方法:按创建时的逆序撤销每个非static成员,如果成员是类类型,调用该成员的析构方法撤销对象。

免责声明:文章转载自《C++ 构造和析构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇教你调用数据库读取短信 记事本 通讯录文件,让ios5的短信恢复到ios4System.Web.Mvc 找到的程序集清单定义与程序集引用不匹配下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用 PowerShell 将数据磁盘附加到 Windows VM

本文介绍如何使用 PowerShell 将新磁盘和现有磁盘附加到 Windows 虚拟机。 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘。 有关详细信息,请参阅虚拟机大小。 若要使用高级存储,需要支持高级存储的 VM 大小,如 DS 系列或 GS 系列虚拟机。 有关详细信息,请参阅高级存储:适用于 Azure 虚拟机工作负荷的高性能...

FlexCell控件初始化以及加载数据集[原创]

  '================================写在之前的话 抱歉,一直没有时间,所以FlexCell作者给我的几种加载数据集方法的代码一直没有发出来。 同时再次感谢FlexCell作者的厚道。 博客上发代码有点困难。如果有人有兴趣的话可以登录我的邮箱去获取FlexCell作者给我的几种加载数据集的方法。 邮箱地址:getsoft@...

Bash变量

1、变量类型 Bash变量有两种:局部变量和环境变量 局部变量:局部变量的范围仅在创建它的Shell中有效 环境变量:能为创建它的Shell及其派生子进程所用的变量,也经常被称为全局变量,一般约定环境变量为大些,它们是那些可以通过内置命令export导出的变量。 2、变量命名 变量名必须以字母或下划线开始,其余部分则可以由字符、数字或下划线构成。变量名中不...

mnesia数据库学习笔记二

  mnesia数据库学习笔记二 创建一个mnesia数据库 定义方案 数据模型 启动Mnesia 创建新表 1、定义方案(schema) Mnesia 系统配置是在Schema中描述的。Schema数据表中的数据只能通过其相关函数进行访问和修改。Mnesia允许动态配置其内容。 方案函数 mnesia:create_schema(NodeList)该...

UBoot代码分析与移植

一.摘要 这篇文章主要对BootLoader(UBoot)的源码进行了分析,并对UBoot的移植略作提及。 BootLoader的总目标是正确调用内核的执行,由于大部分的BoorLoader都依赖于CPU的体系结构。因此大部分的BootLoader都分为两个步骤启动。依赖于CPU体系结构(如设备初始化等)的代码都放在stage1。而stage2一般使用C语...

mysql8下载安装及配置

mysql8下载和安装 一、下载 官网地址:https://dev.mysql.com/downloads/mysql/8.0.html 选择“downloads”-->"mysql community server",如下图所示: 向下滑动页面,找到你电脑适配的版本,点击“download”,如下图: 页面跳转,不需要注册和登陆,点击“No t...