相关疑难解决方法(0)

如何对联盟进行零初始化?

请考虑以下代码:

struct T {
    int a;
    union {
        struct {
            int a;
        } s1;
        struct {
            char b[1024];
        } s2;
    };
};

int main() {
    T x = T();
}
Run Code Online (Sandbox Code Playgroud)

由于调用了显式构造函数,上面的代码最终将零初始化为x中的所有数据成员.

但即使未调用显式,我也希望x初始化为零.要做到这一点,一个想法是在他们的声明中初始化数据成员,这对于T :: a来说似乎没问题.但是,如何使用相同的标准对联合占用的所有内存进行零初始化?

struct T {
    int a = 0;
    union {
        struct {
            int a;
        } s1;
        struct {
            char b[1024];
        } s2;
    };
};

int main() {
    T x; // I want x to be zero-initialized
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
2
解决办法
6027
查看次数

在c ++中初始化结构的成员变量

我有一个带有几个double值的结构:

struct A {
  double a;
  double b;
}
Run Code Online (Sandbox Code Playgroud)

如果我创建一个新结构,例如A a,所有成员(例如a.a)是否在C++中自动初始化为零?

c++ struct initialization

3
推荐指数
2
解决办法
1090
查看次数

C++ 结构体的存储持续时间和成员初始化

#include <iostream>

using namespace std;

struct A {
    // Some Other Code
    int x;
};

A a1;

int main(){
    A a2;
    cout << "a1.x = " << a1.x << endl;
    cout << "a2.x = " << a2.x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++14 标准 (ISO/IEC 14882:2014) 第 8.5 节,第 12 段:

如果没有为对象指定初始化程序,则该对象是默认初始化的。当获得具有自动或动态存储期限的对象的存储时,该对象具有不确定值,如果没有对该对象执行初始化,则该对象保留一个不确定值,直到该值被替换(5.17)。[注意:具有静态或线程存储持续时间的对象是零初始化的,参见 3.6.2。- 尾注]

那么a1有静态存储持续时间和a2自动存储持续时间吗?的定义Struct A在全局命名空间以及a1声明中,而a2声明在块范围内(在main()函数内部)。

此外,第 3.6.2 节说:

第 1 段:

作为程序启动的结果,具有静态存储持续时间的非局部变量被初始化。

第 2 段: …

c++ struct initialization member storage-duration

3
推荐指数
1
解决办法
820
查看次数

结构默认构造函数:它会使用默认值来初始化我的成员,即'零'

我正在学习构造函数,我需要澄清一下.我可以在不指定构造函数的情况下构建结构如下:

 struct MyStruct {
 int member;
 }
Run Code Online (Sandbox Code Playgroud)

当我创建此结构的对象时,生成的默认构造函数将不会初始化member为默认值,除非在用户定义的构造函数中明确说明,对吗?这样:

MyStruct object;
cout<<object.member<<endl;
Run Code Online (Sandbox Code Playgroud)

将根据运行时存储在该内存地址中的内容输出一些随机值,对吗?

我的最后一个问题是,如果我没有显式地声明和定义构造函数,那么生成的构造函数会member在创建对象时初始化MyStruct还是member未初始化?

c++ constructor struct language-lawyer

0
推荐指数
1
解决办法
2305
查看次数