避免在每个派生类中重新实现方法调用

Avoid re-implementation of a method call in each derived class

本文关键字:新实现 实现 调用 方法 派生      更新时间:2023-10-16

我有一个抽象类及其派生类。

我想在抽象类中有一个成员(即fderivedName),带有派生类的名称。

在每个派生类的构造函数中:

fDerivedName = this->ClassName();

有一种方法可以避免在每个派生类中重新实现此功能吗?

谢谢

您可以在基类中实现构造函数(然后不再是纯抽象),将派生类的名称作为参数传递,然后在构造函数的初始化程序列表中进行分配:

class Base
{
public:
   Base( const std::string& derived_class_name):
      fDerivedName( derived_class_name)
   {
   }
   ...
};

但是,当然,您仍然必须从派生类的每个构造函数中调用此基类构造函数。您将不得不将类名称作为参数传递,您不能例如调用由派生类负载的虚拟函数ClassName()