What is the default value for C++ class members

后端 未结 2 1099
执念已碎
执念已碎 2020-11-27 15:30

What is the default values for members of a struct and members of a class in c++, and how do these rules differ (e.g. between classes/structs/primitives/etc) ? Are there cir

相关标签:
2条回答
  • 2020-11-27 16:04

    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.

    0 讨论(0)
  • 2020-11-27 16:04

    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();
    
    0 讨论(0)
提交回复
热议问题