c++中的初始化列表
目录
初始化列表的概念和使用
初始化列表的注意事项
1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
2. 类中包含以下成员,必须放在初始化列表位置进行初始化:
3.最好使用初始化列表进行初始化,因为对于自定义类型,我们还是需要使用初始化列表进行初始化的
4. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关
初始化列表的概念和使用
初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式
Data(int year = 0, int month = 0, int day = 0) : _year(year), _month(month), _day(day)
//以构造函数声明后的:(冒号)开始,每个成员变量用,(逗号)隔开,()括号中放的是初始化的值{}
初始化列表的注意事项
一个对象的当个成员变量在初始化列表是定义阶段(构造函数),而在构造函数里面就是赋值了,假如我们没写成员变量的初始化列表也会初始化,只不过初始化为随机值
1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
2. 类中包含以下成员,必须放在初始化列表位置进行初始化:
1、引用成员变量
class Data
{
public:Data(int year = 0, int month = 0, int day = 0):_a(year) //使用初始化列表初始化{_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;int& _a; //定义一个引用成员变量
};
引用在类中只是被声明,没有被定义,所以可以先不初始化,当我们实例化一个对象之后,必须进行初始化,所以引用要在初始化列表初始化
2、const成员变量
class Data
{
public:Data(int year = 0, int month = 0, int day = 0):_a(0) //使用初始化列表初始化{_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;const int _a; //定义一个const修饰的成员变量
};
const修饰的成员变量不能够被修改,所以需要在定义时候进行初始化
3、自定义类型成员(该类没有默认构造函数)
class A
{
public:A(int x) //因为我们写了构造函数,所以这个类没有默认构造函数了{_a = x;}
public:int _a;
};class Data
{
public:Data(int year = 0, int month = 0, int day = 0) :a(0) //使用初始化列表初始化{_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;A a; //创建一个类的对象
};
因为类没有默认构造函数,所以类里面的成员变量不会自动赋值,我们必须对它进行初始化,这个初始化就在初始化列表
3.最好使用初始化列表进行初始化,因为对于自定义类型,我们还是需要使用初始化列表进行初始化的
4. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关
#include<iostream>
using namespace std;class A
{
public:A(int a):_a1(a), _a2(_a1) //使用初始化列表初始化{}void Print() {cout << _a1 << " " << _a2 << endl;}
private:int _a2;int _a1;
};int main() {A aa(1);aa.Print();
}
结果为,因为初始化列表进行初始化的时候是按照成员变量声明的顺序来的,所以_a2先被初始化为随机值,_a1再被初始化为a
c++中的初始化列表相关推荐
- C++中成员初始化列表的使用
C++在类的构造函数中,可以两种方式初始化成员数据(data member). 1,在构造函数的实现中,初始类的成员数据.诸如: class point { private: int x,y; pu ...
- lt;转载自刘佳ID:freedom0203和waretgt; C++中成员初始化列表的使用
刘佳: C++在类的构造函数中,可以两种方式初始化成员数据(data member). 1,在构造函数的实现中,初始类的成员数据.诸如: class point { private: int x,y ...
- c++中的初始化列表详解
目录: 定义 使用初始化列表的原因 必须使用初始化列表的时候 成员变量的顺序 定义 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号 ...
- 3-6:类与对象下篇——构造函数中的初始化列表、匿名对象和explicit关键字
文章目录 (1)真的是初始化吗 (2)初始化列表 A:概述 B:哪些成员必须在初始化列表进行初始化 (3)注意 (4)匿名对象 (5)explicit关键字 (1)真的是初始化吗 前文中,我们使用构造 ...
- C ++中的初始化程序列表– std :: initializer_list
In this article, we'll take a look at using initializer lists in C++ (std::initializer_list). 在本文中,我 ...
- 初始化列表的使用(十五)
我们之前在 C 语言中可以定义 const 成员,那么我们是否可以在类中定义 const 成员呢?我们来看看下面代码中的类定义是否合法呢?如果合法,ci 的值是什么,存储在哪里呢? #include ...
- 第20课 - 初始化列表的使用
第20课 - 初始化列表的使用 0. 问题 类中是否可以定义 const 成员? 下面的类定义是否合法?如果合法,ci 的值是什么,存储在哪里? 1 class Test 2 { 3 private: ...
- Improve Performance of C++ Codes (1) -- 使用初始化列表还是赋值语句?
就提高程序的性能/效率而言,上层的平台/架构/算法/数据结构当然重要,然而也不能忽视代码本身的性能优化,即为了让编译器将你写的高级语言的代码翻译成尽量高效的机器代码,这方面也是我很感兴趣的领域,下面就 ...
- C++中初始化列表的使用
文章目录 1 C++中初始化列表的使用 1.1 类成员的初始化 1 C++中初始化列表的使用 1.1 类成员的初始化 C++中提供了初始化列表对成员变量进行初始化. 语法规则: 注意事项: 成员的初始 ...
最新文章
- 超详细单机版搭建hadoop环境图文解析
- 近亿台物联网设备或遭劫持,这家IoT云平台遭遇“灾难性”入侵事件
- es6 --- 正确获取Generator函数内部的this对象使其可以使用new
- Ubuntu下安装SSH服务
- 如何使用Spring初始化程序创建Spring Boot项目
- mui 头部tab代码2
- 容器编排技术 -- Kubernetes Namespaces
- 微信为什么没有公众号导航
- 【java】switch的用法介绍
- 【2017-5-21】问题总结 Session,Cookie,登录状态保持
- 传统emmc所用的sdio接口_MMC/SD/SDIO介绍
- java 读写acr122u_使用ACR122U 从NTAG203Chip 读取数据
- linux 的vi命令详解,Linux vi 命令详解
- VUE 项目中对象与JSON格式字符串之间的转换
- 中兴笔试题:打家劫舍【动态规划】
- ubuntu网速慢的解决
- 第十二节 JS事件高级应用
- C#专用集合类StringCollection与StringDictionary
- npm i 报错及解决方案
- 如何在网页标题左边添加ico图片