【问题标题】:Rules for on implicit fields initialization隐式字段初始化规则
【发布时间】:2012-06-08 08:49:25
【问题描述】:

我最近修复了我的一个应用程序中的一个错误:问题是驻留在堆栈上的对象有一个未初始化的字段。

该对象有一个这种类型的类声明:

struct A{
    int somefield, someotherfield;
    A(): someotherfield(0) {}
}

在声明局部变量时(如函数中的A var;),somefield 未初始化,因此读取它会返回一个随机值。

我确信没有出现在构造函数初始化列表中的类的字段总是由合成的普通构造函数初始化(在 int 的情况下,为零值)。显然我错了。

那么关于隐式字段初始化的一般规则是什么?

【问题讨论】:

    标签: c++ class constructor initialization stack


    【解决方案1】:
    • 类和结构由构造函数初始化
    • 基本类型 int double char short ... 未初始化且包含随机数
    • 指针未初始化并指向随机位置
    • 类或结构的数组导致每个元素由其构造函数初始化
    • 基本类型或指针的数组是随机的。

    【讨论】:

    • 数组呢?每个元素的规则相同?
    猜你喜欢
    • 2010-12-27
    • 2023-03-13
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多