gpt4 book ai didi

c++ - 使用基类对象 C++ 初始化子类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:23 25 4
gpt4 key购买 nike

所以,标题可能有点困惑,但这是我的问题:

我有一个父类(super class)(我们称它为 SupClass)和一个继承自 SupClass 的子类(我们称它为 InhClass)。现在,我想为我的 InhClass 创建一个构造函数,它接收一个 SupClass 对象并用它初始化 InhClass 的“SupClass 部分”。

下面是一个代码示例,试图说明这一点:

Class SupClass { 
public:
SupClass() {
//Initialize SupClass object
}
};

Class InhClass : private SupClass {
public:
InhClass(SupClass obj) {
//Initialize SupClass inheritance with obj
}
};

如果您已经初始化了一个 SupClass 对象(并且可能正在处理)但时间很短,或者从那时起您想要使用 InhClass 对象,则可以使用此方法。无需复制所有内容(或关闭并重新打开文件,例如),我将能够使用其基类对象初始化我的子类。

提前致谢

对于任何英文错误,我深表歉意,

最佳答案

您必须复制或移动它才能成为新对象的一部分;无法将现有对象转换为新类型。

以通常的方式在初始化列表中初始化它。

// Copy an existing object
InhClass(SupClass const & obj) : SupClass(obj) {}

// Move an existing object
InhClass(SupClass && obj) : SupClass(std::move(obj)) {}

为了避免复制/移动,您必须使用继承以外的方法。您可以有一个“包装器”类,其中包含对 SupClass 的指针/引用,以及您想要对其进行扩展的任何内容。

struct Wrapper {
SupClass & obj;

// Refer to existing object without creating a new one
Wrapper(SupClass & obj) : obj(obj) {}
};

关于c++ - 使用基类对象 C++ 初始化子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750336/

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