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

embedded/2025/1/12 5:03:09/

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.ppmy.cn/embedded/153210.html

相关文章

数据结构与算法之二叉树: LeetCode 199. 二叉树的右视图 (Ts版)

二叉树的右视图 https://leetcode.cn/problems/binary-tree-right-side-view/ 描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1 输入:root [1,2,3,nu…

为AI聊天工具添加一个知识系统 开发环境准备

现在,我准备开始开发这个项目,需要搭建开发环境 并将前面的程序整理到项目文件中。请完成--我是一个新手 好的!我将帮助您从头开始搭建开发环境,并整理好之前的程序代码到项目文件中,以便您可以轻松启动这个项目。以下…

springCloudGateWay使用总结

1、什么是网关 功能: ①身份认证、权限验证 ②服务器路由、负载均衡 ③请求限流 2、gateway搭建 2.1、创建一个空项目 2.2、引入依赖 2.3、加配置 3、断言工厂 4、过滤工厂 5、全局过滤器 6、跨域问题

iChainfo 品牌升級為 ichaingo,打造 Web3 數據基礎設施新標杆

Web3 數據基礎設施服務商 iChainfo 今⽇正式宣佈,全新名稱 「ichaingo」 重磅登場,新的官⽅網站 ichaingo.com 正式上線。此次品牌升級基於 Web3 ⾏業的發展趨勢和公司⾃⾝的戰略布局,旨在為全 球⽤戶提供更準確、即時、全⾯、深⼊的 Web3 數…

12. C语言 数组与指针(深入理解)

本章目录: 前言1. 什么是数组?2. 数组的声明与初始化声明数组初始化数组 3. 访问数组元素遍历数组 4. 获取数组长度使用 sizeof 获取长度使用宏定义简化 5. 数组与指针数组名与指针的区别使用指针操作数组 6. 多维数组遍历多维数组 7. 数组作为函数参数8. 高级技巧与…

dbeaver创建create临时表之后查询不到问题排查

前提:一共有三张表,表一和表二和表三 需求是要拿表一和表二的查询结果和表三进行关联查询 所以写了sql如下 CREATE TEMPORARY TABLE temp_reports AS SELECT gr.*, sd.dept_id, sd.parent_id FROM pc_amount_report gr LEFT JOIN sys_…

CAPL概述与环境搭建

CAPL概述与环境搭建 目录 CAPL概述与环境搭建1. CAPL简介与应用领域1.1 CAPL简介1.2 CAPL的应用领域 2. CANoe/CANalyzer 安装与配置2.1 CANoe/CANalyzer 简介2.2 安装CANoe/CANalyzer2.2.1 系统要求2.2.2 安装步骤 2.3 配置CANoe/CANalyzer2.3.1 配置CAN通道2.3.2 配置CAPL节点…

shell脚本练习(3)

一、编写一个shell脚本,功能如下: (1)提示用户输入网络接口名称。 (2)根据接口返回IP。 [rootopenEuler-1 ~]# cat showIP.sh #!/bin/bash# 获取接口名 net_nameip a | awk -F"[ :]" /^[0-9]:/ …