我有一些数据的通用解析器的基类,并且我有多个派生类,它们为解析器中包含的数据提供特定的访问接口。只有在解析完所有数据后,我才能确定派生类的类型,因为它取决于层次结构(有基类树,需要完全填充以确定每个基类的派生类)。
从基类创建派生类,避免不必要的数据复制的最佳方法是什么?截至目前,我正在使用 base 的复制构造函数创建派生(如下所示):
class Base
{
};
class Derived : public Base
{
Derived(const Base &base)
: Base(base)
{
}
};
,但这需要复制所有不必要的基础数据——如果可能的话,我希望在不复制和删除它的情况下派生基类。
编辑:
基本解析器解析数据文件并将数据一般存储为 map >,而派生类根据存储的实际数据类型提供特定的访问接口。派生类可能会更改,并且可以添加更多类。