代码之家  ›  专栏  ›  技术社区  ›  leeeroy

C++类成员的默认值是什么?

  •  49
  • leeeroy  · 技术社区  · 15 年前

    C++中的结构成员和类成员的默认值是什么,这些规则是如何不同的(例如,在类/结构/基元/类之间)?是否存在有关默认值的规则不同的情况?

    2 回复  |  直到 15 年前
        1
  •  42
  •   chappjc    9 年前

    C++中的结构和类之间没有区别。他们都被称为正义 类类型 .

    一般情况下,类类型的成员没有默认值。为了让类成员获得一个确定的值,它必须 初始化 ,可以通过

    • 成员本身的默认构造函数
    • 封闭类的构造函数初始值设定项列表
    • 为封闭类的对象显式指定的初始值设定项(包括值初始化和使用聚合初始值设定项初始化)。

    此外,所有具有静态存储持续时间的对象在程序启动时都是零初始化的。

    除上述情况外,类成员再次没有默认值,最初将包含不可预测的垃圾值。

        2
  •  15
  •   Hans Passant    15 年前

    是的,有一个。如果使用默认构造函数初始化对象并使用括号,则pod成员将初始化为零:

    someClass * p = new someClass();
    
    推荐文章