我知道移动构造函数可以避免复制,具有很高的性能。但是我能用它把数据从基类复制到派生类吗?例如:第一个请看代码,我有一个带数据的Base对象,但是我想创建一个Derived类对象,所以我需要从Base对象复制数据,有没有像move constructor这样的好方法?
xytpbqjk1#
由于基类和派生类中的数据布局可能不同,因此没有通用的方法来实现这一点。您需要编写一个特定的函数来为每个类执行复制操作。一种方法是编写一个模板函数,该函数接受一个基类和一个派生类,并使用static_cast复制数据:
template <typename Base, typename Derived> void copy_data(Base& b, Derived& d) { d = static_cast<Derived>(b); }
如果基类和派生类中的数据布局相同,则可以这样做。如果不同,则需要编写一个特定的函数来执行复制。
1条答案
按热度按时间xytpbqjk1#
由于基类和派生类中的数据布局可能不同,因此没有通用的方法来实现这一点。您需要编写一个特定的函数来为每个类执行复制操作。
一种方法是编写一个模板函数,该函数接受一个基类和一个派生类,并使用static_cast复制数据:
如果基类和派生类中的数据布局相同,则可以这样做。如果不同,则需要编写一个特定的函数来执行复制。