当前位置: 首页 > news >正文

C++类和对象(6)——初始化列表

一般的初始化

class A
{
public:A(int a){
//一般的初始化,在{}括号里面给成员变量赋值_a = a;cout << _a << endl;}~A() {}private:int _a;
};

用 初始化列表 初始化

当成员变量是以下两种情况时,

必须使用初始化列表!

const int _b;
int& _c;

当然,我们可以在声明时就写 const int _b =  3,这样也可以初始化。。

但还是推荐下面这种,格式为 类名 + (形参)+ ‘ :’ +  变量名(形参) +   {}

class A
{
public:A(int a, int b, int& c):_a(a),_b(b),_c(c){cout << _a << " " << _b << " " << _c << endl;}~A(){}private:int _a;const int _b;int& _c;
};

注意事项

初始化的顺序是按成员变量的声明的顺序,而不是按在初始化列表里的顺序。

举个例子:

声明的顺序是:_a, _b;

初始化的顺序是:_a(a), _b(a).

再举个栗子:

声明的顺序是:_b,_a;

初始化的顺序是:_b(a),_a(a).

此时a未初始化,是一个随机值,赋给了_b,导致 _b 是随机值;

随后_a正常初始化为1。


http://www.mrgr.cn/news/16238.html

相关文章:

  • 6种有效的时间序列数据特征工程技术(使用Python)
  • Leetcode102二叉树的层序遍历(java实现)
  • 快速掌握业务全景、深入追踪分析异常关键指标的智慧能源开源了。
  • JavaScript初级——滚轮事件
  • 【LeetCode】918. 环形子数组的最大和
  • 原来食物也可以治病 第一篇
  • SQL数据库教案(入门必备)
  • 持续集成与持续部署(CI/CD)的深入探讨
  • clerk中authenticateWithRedirect方法讲解
  • !!学习整理知识模块——关于【如何本地搭建Whisper语音识别模型】/请按需收藏!!
  • Java:时区的用法
  • AMD简介
  • 4.1(1) 图的存储结构-邻接矩阵-无权值
  • 学习之MySQL函数(字符串,数值,日期,流程)
  • 随笔九、SARADC按键程控测试
  • 从默默无名到销量激增,极越CEO哭了
  • Java基础(6)- Java代码笔记3
  • 基于django框架下个人着装助理系统/基于python的服装服装搭配系统
  • Excel 下载工具类
  • nacos集群部署和VIP部署