【发布时间】:2021-06-14 22:36:53
【问题描述】:
给定一个具有一些虚函数的基类,任何人都可以想出一种方法来强制派生类在编译时重写一组虚函数中的一个吗?或者实现相同目的的类层次结构的替代表述?
在代码中:
struct Base
{
// Some imaginary syntax to indicate the following are a "pure override set"
// [
virtual void function1(int) = 0;
virtual void function2(float) = 0;
// ...
// ]
};
struct Derived1 : Base {}; // ERROR not implemented
struct Derived2 : Base { void function1(int) override; }; // OK
struct Derived3 : Base { void function2(float) override; }; // OK
struct Derived4 : Base // ERROR too many implemented
{
void function1(int) override;
void function2(float) override;
};
我不确定我是否真的有一个实际的用例,但是当我正在实施一些松散地遵循这种模式的东西时,我突然想到这是一个值得思考的有趣问题,如果没有其他的话。
【问题讨论】:
-
Derivedx应该由非抽象子类进一步派生? -
没有办法,C++ 不能这样工作。
-
我知道C++不能这样工作,代码只是为了说明问题。
-
说明什么问题?您是否进一步从
Derivedxy类派生?具体的类会是什么样子? -
为了说明帖子中概述的问题,有什么不清楚吗?不,我不想进一步推导。
标签: c++ inheritance overriding virtual-functions pure-virtual