因此,假设我们有 Parent 类
和继承自 Parent 类
的 Offspring 类
。据我了解,当我创建 Offspring
对象时,也会创建一个 Parent
对象并与 Offspring
对象关联。问题是,如果我已经创建了一个独立的 Parent
对象,我可以将其用作包含在 Offspring
对象中的 Parent
对象吗?它的创建时间?
即是否可以不在 Offspring
对象中创建新的 Parent
对象,而是使用原始(且独立的)对象来代替它?只是将原始 Parent
对象的数据复制到 Offspring
对象中创建的数据显然不是我想要的。
最佳答案
这样做是有可能的。如果 Parent 有移动构造函数,那么您可以编写如下内容:
class Offspring : public Parent {
double m_x;
public:
Offspring(Parent && p, double x)
: Parent(std::move(p))
, m_x(x)
{ }
}
我认为这已经是你在不做一些危险和粗略的事情的情况下所能达到的最接近的结果了。虽然这种技术可能无法避免复制 Parent 的数据,但它的效率要高得多。例如,如果 Parent 是 std::vector,则上面的代码将通过从现有 vector 移动来初始化 Offspring 的基数。这将只需要移动 24 字节的数据,而不是 vector 指向的所有数据。
我想您可能想阅读更多关于移动语义的内容,看看它如何适合您的类。
关于c++ - 有没有办法使用预先存在的对象作为 C++ 中第一个对象的子对象来创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30744861/