构造函数初始化列表
列表 初始化 构造函数
2023-09-14 08:56:53 时间
一、什么是构造函数初始化列表
构造函数初始化列表,是在构造函数的基础上,后面以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:
class A { public: int a; int b; //一般的构造函数 A(int x, int y) { a = x; b = y; } };
class A { public: int a; int b; //构造函数初始化列表 A(int x, int y):a(x),b(y) {/*空函数体*/} };
一般的构造函数和构造函数初始化列表有什么区别?
1、这两个构造函数实现的效果是一样的,都可以实现类内成员变量的初始化
2、构造函数初始化列表的使用面更广,有些类型数据(const、引用)的初始化操作使用一般的构造函数初始化不了。
注意:static静态局部变量的初始化不能在参数列表中进行,只能在构造函数内进行
下面会重点举这方面的例子
1、类内没有默认构造函数的成员类对象;(构造函数不带参数,即如果类里面的类对象需要初始化,一般的构造函数初始化不了)
正确的做法是使用构造函数参数列表,列表里面对类对象进行初始化赋值
2、类内const成员或引用类型的成员。(const全局静态变量只能在初始化的时候赋值,其它时候赋值不了)
错误的方法
正确使用方法
还有重要的一点是,使用构造函数初始化列表比一般的构造函数效率高,初始化列表会把初始化和赋值放在一起进行,只需要拷贝构造一次,而一般的构造函数需要拷贝构造两次
使用构造函数初始化列表
使用一般构造函数
二、构造函数初始化列表 的顺序问题
最后在总结一下
1、一般的构造函数不能初始化自带构造函数的类对象
2、一般的构造函数不能初始化const变量和引用变量
3、static变量不能使用列表参数去初始化
4、使用列表参数初始化类内成员变量的效率会更高
5、使用列表参数的时候,声明类内变量的前后顺序很重要,在进行初始化的时候,要避免用一个未初始化的参数去初始化另一个参数
相关文章
- c++中关于初始化型参列表的一些问题
- Entity FrameWork操作数据库完成登陆、列表显示+验证码
- python 列表
- vue+element列表排序
- Python 随机列表、集合、元组、字典的生成和排序
- MFC Windows 程序设计[284]之文件列表过滤器(附源码)
- 65. 使用事物码 SAT 查找某个 SAPGUI 事物码操作调用的 Function Module 列表
- Atitit 艾提拉音频资源列表与统计 t6 六月份战果与7月份规划.docx 目录 1. 第一层次 原始资源类 采集资源类1 1.1. K歌类采集资源 整理1 1.2. K歌类资源初步分类
- Atitit 最近资料文章列表r9 r8 月份 attilax总结
- Atitit.获取某个服务 网络邻居列表 解决方案
- 004-redis-命令-2、哈希操作命令,3、列表操作命令
- C++构造函数初始化列表
- C++初始化参数列表对成员函数初始化(四十一)
- Python基础数据之列表
- 第11讲:Python列表对象中元素修改操作
- 【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类