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

类成员变量的初始化 _

需要注意的是:类中的静态成员变量只有静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外初始化。

#include <iostream> using namespace std; class Base { public: Base(){ } Base(int num){ } int a = { 4 }; int b{ 1 }; double cc = 1.23; char aa = 'a'; string str = "hello"; string str1{ "world" }; //string str2("hello,world"); //用()则会报错,类内不能用()初始化,在类外这个是有参构造,可以使用。 string str3 = { "hello" }; static int c; static const double d; static const char* const e; //静态常量字符数组指向静态字符数组 // 变量是静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外初始化。 const static int f = 0; //const static 和 static const 意义相同,没有区别 }; int Base::c = 8; const double Base::d = 3.14; const char* const Base::e = "i am luffy"; int main() { int ab { 4 }; string str7 = { "hello" }; string str8("888"); string str9 { "888888" }; return 0; }

另外还提供了初始化列表:

#include <iostream> using namespace std; class c { public: c() :m_num(66), a(3), b(3) { } c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){ } int m_num = 8; int a; int b; }; int main() { c c1; c c2(11,22,33); cout << "c1.m_num = " << c1.m_num << " c1.a = " << c1.a << " c1.b = " << c1.b << endl; cout << "c2.m_num = " << c2.m_num << " c2.a = " << c2.a << " c2.b = " << c2.b << endl; system("pause"); return 0; }

输出结果:

c1.m_num = 66 c1.a = 3 c1.b = 3 c2.m_num = 11 c2.a = 22 c2.b = 33

使用初始化列表初始化成员变量

且从上面的程序中说明先运行了int m_num = 8;之后才进行初始化的m_num{66};

那么和之前的this->m_num = a;初始化方式比较谁先运行呢?

class c { public: c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){ this->m_num = 99999; } int m_num = 8; int a; int b; }; int main() { c c2(11,22,33); cout << "c2.m_num = " << c2.m_num << " c2.a = " << c2.a << " c2.b = " << c2.b << endl; system("pause"); return 0;
http://www.jsqmd.com/news/1101493/

相关文章:

  • Cellpose-SAM:突破性通用细胞分割算法的技术架构演进与性能基准分析
  • OpenCV实战:5分钟搞定图像二值化,手把手教你用C++实现大津法(OTSU)
  • 8530蜂鸣器上电不响故障排查
  • 2026 新手必看:ChatGPT 订阅怎么选?国内开通避坑指南
  • 收藏!小白程序员转战AI大模型开发,40%涨幅经验全分享!
  • 2025耳夹耳机哪个品牌好?带你深度解析耳夹耳机排行榜前十名
  • 【2024最严苛生产环境验证】:为什么83%的团队在第3周就弃用AI测试生成?这7个预检清单救了我们
  • 终极指南:轻松掌握REPENTOGON以撒脚本扩展器全平台部署
  • FlaUInspect:现代化UI自动化元素检查工具的技术架构深度分析
  • 用Python+OpenCV+ezdxf,把Logo图片一键转成CAD轮廓线(附完整代码)
  • 终极REPENTOGON深度探索:解锁以撒的结合脚本扩展新纪元 [特殊字符]
  • 告别卡顿!用HC32F460的SPI+DMA驱动GC9306屏幕,实测刷屏性能提升指南
  • 论文写作零基础入门!Gradpaper结构化辅助真的太适合小白
  • 别再只调API了!用SpringBoot+Session打造一个带记忆的ChatGPT对话服务
  • zephyr1--HelloWorld(TODO)
  • DeepSeek识图模式来袭,普通人也能抓住AI大模型应用开发风口(收藏备用)
  • 2026年签约前问清这5个问题,避免全包装修隐形消费!
  • Windows11退出Microsoft管理员账户
  • 从PVT解算到深耦合:在开源GNSS/INS平台上跑通你的第一个组合导航算法
  • 2026 年 AI 生成网站实操,十分钟制作企业站
  • 克隆失败率高达67%?VMware虚拟机克隆常见错误清单,99%的工程师都忽略的3个底层配置项
  • 【紧急避坑】VMware迁移后蓝屏/无法启动?这7类硬件抽象层(HAL)适配错误正在 silently 摧毁你的生产环境
  • 量化指标解析:北京教育医疗小程序.APP开发服务商综合实力榜单
  • 终极指南:3步解锁QMC加密音乐的完全控制权
  • 免费金融数据获取利器:Yahoo Finance API .NET库完全指南
  • 【ops设备,cast+投屏不能反向控制】
  • AI代码审查工具正在悄悄改写你的Code Review流程——3家FAANG团队已全面切换,你还在人工走查?
  • AutoCAD 许可证紧张怎么判断:设计院与制造企业为什么常被短时并发误导
  • Vue项目里如何优雅地嵌入一个可编辑、可保存的Drawio绘图组件?
  • 许可证增购申请总被卡,许可证分析报告到底要回答哪些管理问题