gpt4 book ai didi

c++ - 在没有构造函数的情况下初始化const c++类

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:30 24 4
gpt4 key购买 nike

我有一个在 union 中使用的类,因此不能有(非平凡)构造函数。我需要创建类的 const 实例,可以这样做吗?

即:

 class Foo {
// no constructors...
private:
int i;
};

union {
Foo foo;
Bar bar;
} FooBar;

const Foo defaultFoo = ???

最佳答案

是的,您可以从函数的结果复制构造它:

static Foo configureDefaultFoo()
{
Foo f; // not const
f.setI(42); // call non-const member functions
return f;
}

const Foo defaultFoo = configureDefaultFoo();

请注意,虽然这会导致对象是 const,但它是动态初始化而不是静态的,因此它可能会遭受静态初始化顺序的失败(如果调用非琐碎的构造函数,只有聚合初始化才能避免惨败。

关于c++ - 在没有构造函数的情况下初始化const c++类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110708/

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