gpt4 book ai didi

c++ - 默认的默认构造函数是否将变量初始化为零?

转载 作者:IT老高 更新时间:2023-10-28 22:20:24 29 4
gpt4 key购买 nike

我正在将一个类更新为 C++14,并试图找出在构造时将所有实例变量初始化为零的最简单方法。到目前为止,这是我所拥有的:

class MyClass {
public:
int var;
float* ptr;
double array[3];
MyStruct data;
unique_ptr<MyStruct> smart_ptr;

MyClass() = default;
~MyClass() = default;
}

将构造函数设置为 default 相当于做:

MyClass() : var{}, ptr{}, array{}, data{}, smart_ptr{} {}

... 还是我需要初始化每个变量? (我在 Visual Studio 中都尝试过,无论哪种方式我都得到零,但我不确定这是否是运气。)

我正在实例化不带括号的类:MyClass obj;

最佳答案

Is setting the constructor to default the equivalent of doing:

MyClass() : var{}, ptr{}, array{}, data{}, smart_ptr{} {}

没有。不是。


线

MyClass() = default;

更类似于但不完全等同于:

 MyClass() {}

在任何一种情况下,使用

 MyClass obj;

产生一个默认初始化的对象,其成员默认初始化。

但是,它们在使用时的区别

 MyClass obj{};

obj 将使用默认的默认构造函数进行零初始化,而它仍将使用用户提供的默认构造函数进行默认初始化。

关于c++ - 默认的默认构造函数是否将变量初始化为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42048974/

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