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

C++ 成员初始化列表

成员初始化列表

1.构造函数

#include <iostream>
#include <string>// 成员初始化列表
class Entity
{
private:std::string m_Name;
public:Entity()  // 默认构造函数{m_Name = "Unknown";}Entity(const std::string& name)  // 构造函数{m_Name = name;}const std::string& GetName() const { return m_Name; }
};int main()
{Entity e0;  // 调用默认构造函数std::cout << e0.GetName() << std::endl;Entity e1("Entity");  // 调用有参构造函数std::cout << e1.GetName() << std::endl;std::cin.get();
}

2.成员初始化列表

#include <iostream>
#include <string>// 成员初始化列表
class Entity
{
private:std::string m_Name;int m_Score;
public:Entity()  // 默认构造函数: m_Name("Unknown"), m_Score(0)  // 使用成员初始化列表初始化,必须按照成员声明的顺序初始化{}Entity(const std::string& name)  // 构造函数: m_Name(name)  // 使用成员初始化列表初始化{}const std::string& GetName() const { return m_Name; }
};int main()
{Entity e0;  // 调用默认构造函数std::cout << e0.GetName() << std::endl;Entity e1("Entity");  // 调用有参构造函数std::cout << e1.GetName() << std::endl;std::cin.get();
}

3.重复创建问题

如果使用构建函数传入参数时,可能会出现重复创建的问题。例如如下代码,如果把默认构建函数中的m_Example = Example(8)解注释掉,则会在Example m_Example也会初始化创建一个对象,会产生两个对象。

如果使用初始化列表,则不管有没有初始这个Example,只会创建一个对象。

#include <iostream>
#include <string>// 成员初始化列表class Example
{
public:Example(){std::cout << "Created Entity!" << std::endl;}Example(int x){std::cout << "Created Entity with : " << x << "!" << std::endl;}
};
class Entity
{
private:std::string m_Name;Example m_Example; // Example类的成员变量
public:Entity()  // 默认构造函数: m_Example(8)  // 使用成员初始化列表初始化{m_Name = "Unknown"; // 这种方式是先调用默认构造函数,再赋值//m_Example = Example(8); }Entity(const std::string& name)  // 构造函数: m_Name(name)  // 使用成员初始化列表初始化{}const std::string& GetName() const { return m_Name; }
};int main()
{Entity e0;  // 调用默认构造函数std::cin.get();
}
http://www.dtcms.com/a/457100.html

相关文章:

  • 三门县住房和城乡建设规划局网站商业网站是怎么做的
  • Spring Security 最简配置完全指南-从入门到精通前后端分离安全配置
  • Go泛型实战指南:从入门到工程最佳实践|Go语言进阶(12)
  • easyexcel实现excel读取
  • 用jsp实现网站开发实例高校网站站群建设公司
  • 个人网站导航html源码团购网站模板
  • wpf之RelativeSource用法总结
  • 【C语言基础详细版】06. 动态内存管理:从原理到实战应用
  • 磁悬浮轴承转子不平衡质量控制深度解析
  • 关于力扣2025.10.8每日的收货
  • 烟台做网站的价格网络工程是冷门专业吗
  • 亲测可用,R语言 ggplot2 箱线图线条控制参数详解,箱线图离散数值控制
  • 沙漠风网站建设公司太原不错的互联网公司
  • 记录thinkphp模型查询时select与count执行顺序的疑问
  • AI编写的一个服务器监控源码
  • C# TCP 客户端开发笔记(TcpClient)
  • 网站建设数据库怎么弄个人养老金交15年领多少
  • Linux的Socket编程之TCP
  • ST-Raptor:无需微调,准确率超越 GPT-4o 的半结构化表格问答新范式
  • 深入洞察:华为BLM战略模型和BEM执行模型(图解)
  • wordpress跳转手机站wordpress 短代码 对齐
  • TNNLS-2022《Fast Incomplete Multi-view Clustering with View-independent Anchors》
  • 聊城网站开发培训公司网站可以免费建吗
  • 河南网站设计公司价格青岛企业网站seo技巧
  • 动态DP细谈
  • PHP Exception:深入理解与最佳实践
  • Nginx 反向代理与负载均衡
  • 学校网站建设是什么低价网站建设公司
  • 【HarmonyOS】窗口管理实战指南
  • Java基础加强13-集合框架、Stream流