gpt4 book ai didi

c++ - 我可以说服自动生成的构造函数将我的 POD 类成员置零吗?

转载 作者:行者123 更新时间:2023-11-30 01:03:50 27 4
gpt4 key购买 nike

假设我定义了一个包含一些简单 POD 成员的类,但我懒得写出默认构造函数来将所有类成员初始化为默认值。相反,我要求编译器为我做这件事:

class Foo
{
public:
Foo() = default;
int x;
// etc.
}

我已经用 MSVC 和 x 进行了测试此自动生成的构造函数初始化为零:对于类Foo 的局部对象, x被设置为 0xcccccccc,这是我期望的未初始化堆栈变量的值。

我的问题是是否有一种符合标准的方法可以说服编译器自动对这些 POD 成员进行零初始化。我说“符合标准”是因为我需要能够依赖其他编译器来实现类似的行为。我说“自动”是因为如果可以避免的话,我不想写出一个列出每个类成员的构造函数。

最佳答案

您可以像这样使用类内成员初始化器:

class Foo {
int x = 0;;
int y{}; // same effect.
};

优点是以后可能添加的构造函数之间的一致性。 Core Guidelines C.45 也推荐这种方法.

在头文件中声明此类类时会出现一个缺点,因为必须知道以这种方式初始化的所有成员变量的类型,并且不能向前声明。

关于c++ - 我可以说服自动生成的构造函数将我的 POD 类成员置零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com