gpt4 book ai didi

c++ - 删除默认类构造函数有什么意义?

转载 作者:IT老高 更新时间:2023-10-28 13:57:51 33 4
gpt4 key购买 nike

我正在准备我的 CPP 考试,其中一个问题是:您可以删除默认类构造函数吗?如果可以,这样做的原因是什么?好的,很明显你可以做到:

class MyClass 
{
public:
MyClass() = delete;
};

但我不明白你为什么要这样做?

最佳答案

考虑以下类:

struct Foo {
int i;
};

这个类是一个聚合,你可以创建一个包含所有这三个定义的实例:

int main() {
Foo f1; // i uninitialized
Foo f2{}; // i initialized to zero
Foo f3{42}; // i initialized to 42
}

现在,假设您不喜欢未初始化的值以及它们可能产生的未定义行为。可以删除Foo的默认构造函数:

struct Foo {
Foo() = delete;
int i;
};

Foo 仍然是一个聚合,但只有后两个定义是有效的——第一个现在是编译时错误。

关于c++ - 删除默认类构造函数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48664631/

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