类中的静态成员变量必须“类内声明、类外初始化”?
来源:9-3 static和单例模式的实现
zhaiduting
2022-12-13
必须将声明和初始化拆开?没道理!其他语言不必拆分也都可以的,为什么C++非得这么干?原本寥寥几行代码的单例模式,用C++写起来这么费劲。一点也不优雅,求推荐一门语法类似 JavaScript 的编译型语言,不想学 C++ 了
写回答
1回答
-
关于声明和定义的问题,请参考: https://coding.imooc.com/learn/questiondetail/280318.html
关于静态成员初始化问题:
由于静态成员并不属于类对象的一部分,而属于这个类的所有对象共有部分,所以在类内初始化当然是不合理的。C++语言希望用户能够尽可能掌控内存空间,会在编译时独自给这种静态变量开辟一块空间,这与在内存中产生的对象不属于同一空间,所以不允许在类定义时对其进行初始化操作。C++这门语言确实需要程序员掌控更多内存细节,但同时会获得更强的掌控能力,做其他语言所无法完成的事情。
042022-12-20
相似问题