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

c++ 类的成员初始化

c++ 类的成员初始化

  • 成员变量初始化
  • 基类初始化

成员变量初始化

对于类成员变量的初始化,成员初始化列表比在构造函数体内赋值更高效。

class MyClass 
{
public:// 方式1:成员初始化列表(推荐)MyClass() : num(10), str("hello") {}// 方式2:构造函数体内赋值(效率较低)MyClass() {num = 10;   // 这里实际是赋值操作,不是初始化str = "hello"; // 先调用默认构造函数,再调用赋值运算符}private:int num;std::string str;
};

对于非 POD 类型的成员变量(如 std::string, 自定义类等),使用初始化列表可以避免不必要的默认构造+赋值的开销:

class Performance 
{
public:// 高效:直接调用 std::string 的构造函数Performance() : str("hello") {}// 低效:先调用默认构造函数生成空字符串,再赋值Performance() { str = "hello"; }private:std::string str;
};

对于以下类型的成员变量,必须使用初始化列表:const 常量成员, 引用成员, 没有默认构造函数的类类型成员

class MustUseInitializerList 
{
public:MustUseInitializerList(int& ref) : const_value(42),  // const 成员必须初始化my_ref(ref),      // 引用成员必须初始化no_default_ctor(100)  // 没有默认构造函数的成员必须初始化{}private:const int const_value;int& my_ref;class NoDefault {public:NoDefault(int x) {}  // 没有默认构造函数} no_default_ctor;
};

基类初始化

当你的类继承自基类时,必须在成员初始化列表中调用基类的构造函数:

class Base 
{
public:Base(int value) { /* ... */ }
};class Derived : public Base 
{
public:// 正确:通过初始化列表调用基类构造函数Derived() : Base(42) { /* ... */ }// 错误:若基类没有默认构造函数,这样写会编译失败// Derived() { /* 这里无法调用 Base 的构造函数 */ }
};
http://www.xdnf.cn/news/415351.html

相关文章:

  • [Windows] PicPick Professional_v7.3.4 中文专业版
  • SpringDataRedis的入门案例,以及RedisTemplate序列化实现
  • 18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved
  • Ascend的aclgraph(五)PrimTorch TorchInductor
  • USB学习【10】描述符-HID描述符
  • Stream Deck纯软件实现高性价比平替
  • 多线程(2)——Thread类及常见方法
  • 2025年上半年软考备考攻略:关键事项提醒
  • Java知识库网站整理
  • CHIP第四次作业
  • [编程基础] PHP · 学习手册
  • Spring事务中异步操作导致数据查询失败问题分析与解决方案
  • SHA-256 哈希算法详解
  • DNS工作原理与报文解析
  • Docker快速入门与应用
  • 基于Arduino的贪吃蛇游戏机
  • 位运算题目:黑板异或游戏
  • 火山云网站搭建
  • AES-128 加密与解密详解
  • 分享AI时代数据智能人才定向就业班(暑期班)
  • 【Linux 系统调试】syslog:Linux 系统日志工具详解
  • DAY22kaggle泰坦尼克号
  • 手写 vue 源码 === watch 实现
  • 学习黑客5分钟深入浅出理解系列之Windows compmgmt
  • 配置Hadoop集群-免密登录
  • dfs第二次加训 详细题解 下
  • STM32G474VET6-CAN FD使用经典模式+过滤报文ID
  • ESOP系统如何帮助玩具工厂实现生产数据实时展示
  • rufus+Ubuntu 18.04 镜像
  • Promise/A+ 规范中文解读