【发布时间】:2020-08-01 01:28:30
【问题描述】:
假设我有一个抽象基类
class base
{
public:
virtual void function() = 0;
};
后跟派生类
class derived_1 : public base
{
public:
... function() ...;
};
如果我不想定义上面的函数,但我希望 derived_1 不是抽象的,我怎么能重载它,所以我可以实例化它?
这些类后面跟着另一个类
class derived_2 : public base, public derived_1
{
public:
void function()
{
// What my function does
}
基本上,我希望两个派生类都被实例化,但我希望它们都使用基类作为接口,而derived_2 继承derived_1。主代码中要使用的纯虚函数重载需要在derived_2类中。
有人知道我该怎么做吗?
非常感谢!
【问题讨论】:
-
你不能有一个带有纯虚函数的非抽象类。
-
然后用一个空的body定义
function。 -
在您的代码中,
derived_1不是从任何东西派生的。 -
如果你真的想这样做,你可以用一个空的主体来实现它,或者抛出一个异常(可能不太容易出错)。但是,如果您问这个问题,这可能不是正确的结构。 (也许你应该使用两个不同的基类?)
-
另外,请注意:您实际上不需要
derived_2来继承base和derived_1(只需derived_1也可以这样做,但更简洁)
标签: c++ class inheritance interface base