What is the default value for C++ class members

时光毁灭记忆、已成空白 提交于 2019-11-26 22:09:54
AnT

There are no differences between structs and classes in this regard in C++. They all are called just class types.

Members of class types have no default values in general case. In order to for a class member to get a deterministic value it has to be initialized, which can be done by

  • Default constructor of the member itself
  • Constructor initializer list of the enclosing class
  • Explicitly specified initializer for object of the enclosing class (that includes value-initialization and initialization with aggregate initializer).

Additionally, all objects with static storage duration are zero-initialized at the program startup.

Aside from the above cases, class members, once again, have no default values and will initially contain unpredictable garbage values.

Yeah, there is one. If you initialize an object with the default constructor and use parentheses then the POD members will be zero initialized:

someClass * p = new someClass();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!