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

面试:C++类成员初始化顺序

1、非静态数据成员:按它们在类定义的声明顺序初始化,不会按它们在初始化列表的顺序。

2、静态数据成员:在main函数启动之前,并且只初始化一次

3、基类构造函数:如果类从一个或多个基类继承而来,基类的构造函数在子类的构造函数之前被调用

4、常量成员和引用成员:必须在初始化列表中初始化

参考代码:

class Base {
public:
    Base(int val) : base_val(val) {}
private:
    int base_val;
};

class Derived : public Base {
public:
    Derived() : Base(10), a(5), b(a), c(15) {} // 基类Base先初始化

private:
    int a; // 即使b在初始化列表中出现在a之前,a也会先初始化
    int b;
    int c;
};

在这个例子中,Derived类的构造函数首先调用base的构造函数,然后按照成员变量声明的顺序(即a,然后b,最后c)来初始化,即便在构造函数初始化列表中的顺序是不同的。

学习链接:https://github.com/0voice


http://www.kler.cn/a/500984.html

相关文章:

  • LS1046+XILINX XDMA PCIE调通
  • 基于STM32的智能家居蓝牙系统(论文+源码)
  • 用vscode写latex-1
  • 【LeetCode】:删除回文子数组【困难】
  • python类和对象
  • 【redis】ubuntu18安装redis7
  • SpringCloud系列教程:微服务的未来(十)服务调用、注册中心原理、Nacos注册中心
  • HTTP 请求与响应的结构
  • 《CPython Internals》阅读笔记:p96-p96
  • 矩阵碰一碰发视频的视频剪辑功能源码搭建,支持OEM
  • 采用pycorrector纠错word文件段落,并保存为word文件标红显示出来
  • 消息中间件-kafka工作原理和配置
  • FreePBX 17 on ubuntu24 with Asterisk 20
  • 【Spring】@Size 无法拦截null的原因
  • Julia语言的软件工程
  • .NET Core NPOI 导出图片到Excel指定单元格并自适应宽度
  • Cesium加载地形
  • STM32 : 波特率发生器
  • ceph 数据均衡
  • K11082 加密与解密
  • Vue2+OpenLayers使用Overlay实现点击获取当前经纬度信息(提供Gitee源码)
  • 数据结构讲解
  • es分页查询
  • (STM32笔记)十二、DMA的基础知识与用法 第二部分
  • el-table横向滚动条,滚动后消失
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(5)