gpt4 book ai didi

c++ - 删除构造函数后的初始化

转载 作者:太空狗 更新时间:2023-10-29 20:11:12 27 4
gpt4 key购买 nike

我的问题是:删除构造函数后,有没有办法初始化一个类?例如

class A{
public:
A() = delete;
int a = 42;
int fun(){
a += 1;
return a;
}
};

现在应该不能使用这个类了。例如,您不能:

A* instance = (A*)malloc(sizeof(A));
instance->fun(); //segfault

A instance; //compile error undefined function

假设出于某种奇怪的原因,您实际上想使用删除了构造函数的类,有没有办法可以做到这一点?那是在不执行重写构造函数之类的操作的情况下。

我知道这是一个奇怪的问题,但我很想知道是否有人有(可能晦涩难懂的)这样做的方法。谢谢!

最佳答案

如果该类是一个聚合,您可以使用聚合初始化创建一个,它不会调用A 的构造函数。例如:

A a = { 1 };

在 C++11 中,由于 = 42 的存在,您的类不是聚合。所以在 C++11 中你的类是不可用的。

但在 C++14 中,这发生了变化,= 42 不会阻止该类成为聚合,因此它可以再次使用。

关于c++ - 删除构造函数后的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506066/

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