版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_42187898/article/details/83818882
如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。
学习C++编译环境:Linux
第二十七课 二阶构造模式
1.构造函数的回顾
关于构造函数
类的构造函数用于对象的初始化
构造函数与类同名并且没有返回值
构造函数在对象定义时自动被调用
2.问题
1.如何判断构造函数的执行结果?没有办法
2.在构造函数中执行return语句会发生什么?构造函数立即返回
3.构造函数执行结束是否意味着对象构造成功?并不意味着构造成功
27-1 异常的构造函数
3.你该知道的真相
构造函数
只提供自动初始化成员变量的机会
不能保证初始化逻辑一定成功
执行return语句后构造函数立即结束
4.真相的意义
构造函数能决定的只是对象的初始状态,而不是对象的诞生!!
5.半成品对象
半成品对象的概念
初始化操作不能按照预期完成而得到的对象
半成品对象是合法的C++对象,也是Bug的重要来源
难调的Bug:野指针、半成品对象
IntArray 半成品对象的危害
6.二阶构造—变成品对象的解决方案
核心:将构造过程一分为二
原理层面:
工程开发中的构造过程可分为
资源无关的初始化操作
不可能出现异常情况的操作
需要使用系统资源的操作
可能出现异常情况,如:内存申请,访问文件
代码层面:
二阶构造示例一
二阶构造示例二
27-2 二阶构造初探
IntArray 数组类的加强
小结
构造函数只能决定对象的初始化状态
构造函数中初始化操作的失败不影响对象的诞生
初始化不完全的半成品对象是Bug的重要来源
二阶构造人为的将初始化过程分为两部分
二阶构造能够确保创建的对象都是完整初始化的