c++ 如何快速地将数据从基类复制到派生类?

ftf50wuq  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(148)

我知道移动构造函数可以避免复制,具有很高的性能。
但是我能用它把数据从基类复制到派生类吗?
例如:
第一个
请看代码,我有一个带数据的Base对象,但是我想创建一个Derived类对象,所以我需要从Base对象复制数据,有没有像move constructor这样的好方法?

xytpbqjk

xytpbqjk1#

由于基类和派生类中的数据布局可能不同,因此没有通用的方法来实现这一点。您需要编写一个特定的函数来为每个类执行复制操作。
一种方法是编写一个模板函数,该函数接受一个基类和一个派生类,并使用static_cast复制数据:

template <typename Base, typename Derived>
void copy_data(Base& b, Derived& d)
{
    d = static_cast<Derived>(b);
}

如果基类和派生类中的数据布局相同,则可以这样做。如果不同,则需要编写一个特定的函数来执行复制。

相关问题