类中的静态成员变量必须“类内声明、类外初始化”?

来源:9-3 static和单例模式的实现

zhaiduting

2022-12-13

必须将声明和初始化拆开?没道理!其他语言不必拆分也都可以的,为什么C++非得这么干?原本寥寥几行代码的单例模式,用C++写起来这么费劲。一点也不优雅,求推荐一门语法类似 JavaScript 的编译型语言,不想学 C++ 了

写回答

1回答

quickzhao

2022-12-14

关于声明和定义的问题,请参考: https://coding.imooc.com/learn/questiondetail/280318.html

关于静态成员初始化问题:
由于静态成员并不属于类对象的一部分,而属于这个类的所有对象共有部分,所以在类内初始化当然是不合理的。C++语言希望用户能够尽可能掌控内存空间,会在编译时独自给这种静态变量开辟一块空间,这与在内存中产生的对象不属于同一空间,所以不允许在类定义时对其进行初始化操作。

C++这门语言确实需要程序员掌控更多内存细节,但同时会获得更强的掌控能力,做其他语言所无法完成的事情。

0
4
quickzhao
回复
zhaiduting
不客气,加油!
2022-12-20
共4条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程