C++ 构造函数
来源:互联网 发布:软件工程项目管理论文 编辑:程序博客网 时间:2024/05/17 03:58
1. 定义
与类同名、无返回值类型的成员函数。
析构函数是对象创建的一部分,在创建对象时,会被自动调用;创建对象后,析构函数就不能再被调用
默认析构函数:不带参数,或者所有参数都有默认值的的析构函数,析构函数可以重载。
类的析构函数一般是公开的,但是有时也把析构函数声明为私有的(如单例模式中就把析构函数声明为私有的),其作用是限制创建该类对象的范围。
2. 调用
根据参数进行重载,决定调用哪个析构函数。
3. 成员初始化表
对于常量数据成员和引用数据成员(某些静态成员除外),不能在声明它们时进行初始化,也不能采用赋值操作对它们初始化。
class A{ int x; const int y=1;//Error int &z=x;//Error public: A() { x=0;//OK y=1;//Error,y是常量成员,其值不能改变 }}
它们的初始化要在成员初始化表中进行。
class A{ int x; const int y; int& z; public: A(): z(x),y(1) { x=0; }}
或者
class A{ int x; const int y; int& z; public: A(): x(0),z(x),y(1) { }}
成员初始化表的次序不决定它们的初始化次序,它们的初始化次序由它们在类中的定义的次序决定。
如果类中含有常量数据成员或引用数据成员,一定要定义带有成员初始化表的构造函数,否则编译程序生成的默认构造函数是没有成员初始化表的,这样的类是不能创建对象的。
在创建包含成员对象的对象时,首先调用本身类的构造函数,在进入本身类的析构函数之前,将会去调用成员对象类的构造函数,然后再执行本身构造函数的函数体(在继承中,要先调用基类的构造函数,再调用成员对象类的构造函数,最后执行自己的函数体)。即使成员对象初始化表为空,只要类中有成员对象,编译程序就会生成对成员对象构造函数的调用指令,只不过它调用的默认构造函数。
0 0
- 【C++】拷贝构造函数
- C#:静态构造函数
- C++:拷贝构造函数
- explicit构造函数(C++)
- C++:关于构造函数
- C++-构造函数
- C++String构造函数
- c++-转换构造函数
- c++"拷贝构造函数
- C++: 拷贝构造函数
- object-c 构造函数
- C#构造函数
- objective-c 构造函数
- 【C++】构造函数
- 【C++】explicit构造函数
- 【C++】拷贝构造函数
- C++: 复制构造函数
- C++: 移动构造函数
- Log4Net是线程安全的吗?
- 《A Neural Algorithm of Artistic Style》笔记
- GPS定位+百度离线地图V2.0
- 为CSDN博客添加打赏功能
- 双系统WIN10重做后进不去Ubuntu的解决办法
- C++ 构造函数
- ios 双拉杆
- 程序员面试金典——链表分割
- BZOJ4813: [Cqoi2017]小Q的棋盘
- OCR识别新能源车牌的原理
- Java I/O的机制
- C++ 析构函数
- android开发中遇到的问题汇总【十】
- [JZOJ5052]旅行路线