关于构造函数的小结(学习中)
2017-02-24 16:36
169 查看
构造函数的名字和类名相同,没有返回类型,不能被声明为const的。当我们创建类的一个const对象时,直到构造函数完成初始化过程,对象才能真正取得其“常量属性”。因此构造函数在const对象的构造过程中可以向其写值。 某些类不能依赖于合成的默认构造函数: ①编译器只有在发现类不包含任何构造函数的情况下才会替我们生成一个默认构造函数。 ②对于某些类来说,合成的默认构造函数可能执行错误的操作。(可能会使指针之类的未定义) ③有的时候编译器不能为某些类合成默认的构造函数。例如,类中包含其他类型的成员且这个成员的类型没有默认构造函数。 构造函数的初始值有时必不可少: 如果成员是const或者是引用的话,必须将其初始化。类似的,当成员属于某种类类型且该类类型没有定义默认构造函数,也必须将其初始化: 例如
class ConstRef { public: ConstRef(int ii); private: int i; const int ci; int &ri; }//ci和ri必须被初始化
随着构造函数体一开始执行,初始化就完成了。我们初始化const或者引用类型的数据成员的唯一机会就是通过构造函数初始值,因此该构造函数的正确形式应该是:
“`
ConstRef::ConstRef(int ii): i(ii), ci(ii), ri(i) { }
“
在实际中,如果定义了其他构造函数,那么最好也提供一个默认构造函数。
相关文章推荐
- 关于android自定义控件的学习心得小结
- Unity3d C#学习小结(五)[关于不同平台的条件编译]
- 阿里巴巴Java开发手册学习小结4-关于集合处理
- 关于后盾网yii框架的学习小结(5)--验证码的使用与规则的设置,为后台模块设置独立的布局
- 关于学习进程控制和线程控制的小结
- 关于后盾网yii框架的学习小结(10)--使用AR类的增删改查
- C++问题小结--3.构造函数与析构函数关于其自身特点的简单代码陈述
- 关于IT项目和团队管理学习的小结
- C++ 学习之构造函数:构造函数小结1
- Android(java)学习笔记188:关于构造代码块,构造函数的一道面试题(华为面试题)
- 关于Fragment学习小结
- 黑马程序员----关于构造函数与的学习以及this指针在构造函数间的调用规则
- 关于抽象类中构造函数的一些学习
- 黑马程序员之C#学习笔记:关于C#构造函数
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- 【C++学习】构造函数、拷贝构造函数、析构函数小结
- 关于后盾网yii框架的学习小结(6)--数据库连接配置与模型定义与后台登陆验
- 关于后盾网yii框架的学习小结(2)--创建控制器,视图,布局等
- 关于后盾网yii框架的学习小结(4)--gii,widget的使用
- 关于JQ的学习小结