【发布时间】:2019-11-13 05:03:24
【问题描述】:
当覆盖 C++ 虚方法时,有没有一种方法可以在不指定确切的基类名称的情况下调用基类方法,就像我们可以在 C# 中使用“base”关键字一样?我知道这可能与多重继承冲突,但我想知道更现代的 C++ 版本是否引入了这种可能性。 我想做的是这样的:
class A
{
public:
virtual void paint() {
// draw something common to all subclasses
}
};
class B : public A
{
public:
virtual void paint() override {
BASE::paint();
// draw something specific to class B
}
};
我知道在 B::paint() 中我们可以调用 A::paint(),我只是想知道是否有更“通用”的方式来调用基方法而不显式引用 A 类。 先感谢您。 安德烈亚
【问题讨论】:
-
不,目前不可能。
-
目前没有。不幸的是,纸 N2965 was rejected 否则您可以使用
std::direct_base和类型别名。也许很快(TM)。 -
如果你使用 Visual C++ (Visual Studio),你可以使用
__super。否则,这是一个相关的阅读:stackoverflow.com/questions/180601/using-super-in-c
标签: c++ class methods virtual abstract