C++ 构造函数初始化列表
来源:互联网 发布:淘宝类目排行榜 编辑:程序博客网 时间:2024/06/03 23:45
一、整体代码
Object.h
#ifndef _Object_H_#define _Object_H_#include "ObjectA.h"class Object{ public: enum E_TYPE { TYPE_A = 100, TYPE_B = 200 }; public: // 如果类不提供任何一个构造函数,系统将为我们提供一个不带参数的 // 默认的构造函数 Object(int num=0); ~Object(); void DisplayKNum(); private:ObjectA obj; int num_; const int kNum_; int& refNum_;};#endif
Object.cpp
#include"Object.h"#include<iostream>using namespace std;// 不带参数的构造函数称为默认构造函数Object::Object(int num) : num_(num),kNum_(num), refNum_(num_),obj(3)//之前没有分配内存,这里是初始化,而不是赋值{ cout<<"Object "<<num_<<" ..."<<endl;}Object::~Object(){ cout<<"~Object "<<num_<<" ..."<<endl;}void Object::DisplayKNum(){ cout<<"kNum="<<kNum_<<endl;}
ObjectA.h
#ifndef _ObjectA_H_#define _ObjectA_H_class ObjectA{public: ObjectA(int num);//如果有了新的构造函数,那么默认构造函数就没有了 ~ObjectA(); void DisplayKNum();private: int num_;};#endif
#include"ObjectA.h"#include<iostream>using namespace std;// 不带参数的构造函数称为默认构造函数ObjectA::ObjectA(int num){ num_=num; cout<<"ObjectA "<<num_<<" ..."<<endl;}ObjectA::~ObjectA(){ cout<<"~ObjectA "<<num_<<" ..."<<endl;}void ObjectA::DisplayKNum(){ }
01.cpp
#include <iostream>#include "Object.h"using namespace std;// const成员的初始化只能在构造函数初始化列表中进行// 引用成员的初始化也只能在构造函数初始化列表中进行// 对象成员(对象所对应的类没有默认构造函数)的初始化,也只能在构造函数初始化列表中进行int main(void){ Object obj(10); obj.DisplayKNum(); return 0;}
二、运行结果
三、解释
一共有四种类型一定要在构造函数初始化列表初始化:
一、const成员的初始化只能在构造函数初始化列表中进行
二、 引用成员的初始化也只能在构造函数初始化列表中进行
三、对象成员的初始化,也只能在构造函数初始化列表中进行,如果代码中没有初始化,那么编译器已经默认添上了对象的构造函数obj( )。
四、继承父类的构造函数只能在构造函数初始化列表中进行,如果代码中没有初始化,那么编译器已经默认添上了父类的构造函数base( )。
对象在初始化列表中初始化,请参考http://blog.csdn.net/yili_xie/article/details/4803428
- 【C/C++】构造函数的初始化列表
- 构造函数初始化列表(C++)
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- 构造函数初始化列表
- xmln:tools的作用
- 图像的二维DFT及其反变换
- 【分享】某卖鞋电商的用户搜索日志
- Python中的浅拷贝与深拷贝
- MFMailComposeViewController发送邮件的实例
- C++ 构造函数初始化列表
- vmware ubuntu扩展硬盘
- GetLastError()返回值列表
- Class.forName的作用以及为什么要用它【转】
- Android AppWidget实例验证
- mysql 触发器 NEW OLD
- Git 常用命令
- 推荐一些计算机视觉相关的书籍
- js进化史