gpt4 book ai didi

c++ - 有什么方法可以在 C++ 中分解出 "const"字段初始值设定项

转载 作者:行者123 更新时间:2023-11-30 02:22:08 24 4
gpt4 key购买 nike

在 C++ 中,我有一个包含一些常量字段的类:

class Obj {
static const AType defaultAType;
const AType &cRef;
public:
Obj() : cRef(defaultAType) { ... }
Obj(AType &aType) : cRef(aType) { ... }
};

这是一个简单的例子。但是一个真实的可能有很多字段,以及几个不同的构造函数重载。据我所知,引用和“常量”字段不能在构造函数的主体或构造函数调用的方法中初始化。但是同步维护多个初始值设定项是一件很痛苦的事情,比如 5 个单独的构造函数重载。有什么方法可以正确分解出这些初始值设定项(宏除外)??

最佳答案

在评论中,你说,

Yes that is the structure however const items, references, and class items can't be initialized in the body of constructors or in a non-constructor method.

A delegating constructor可用于初始化引用成员变量。

稍微扩展一下您的示例代码,我可以看到如下内容:

class Obj {
static const AType defaultAType;
const AType &aRef;
static const BType defaultBType;
const BType &bRef;
public:

// Delegate with default values for both references
Obj() : Obj(defaultAType, defaultBType) {}

// Delegate with default value for the B reference
Obj(AType &aType) : Obj(aType, defaultBType) {}

// Delegate with default value for the A reference
Obj(BType &bType) : Obj(defaultAType, bType) {}

// A constructor that has all the arguments.
Obj(AType& aType, BType& bType) : aRef(aType), bRef(bType) {}
};

关于c++ - 有什么方法可以在 C++ 中分解出 "const"字段初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659721/

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