当重写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 A
}
};
我知道在B :: paint()中我们可以调用A :: paint(),我只想知道是否存在一种更“通用”的方法来调用基本方法,而无需显式引用类A。 先感谢您。 安德里亚
答案 0 :(得分:3)
否,没有fancy关键字可以访问基类。 正如已经提到的一些评论,一些建议已被标准委员会拒绝。
在某些情况下,我个人选择使用typedef
/ using
指令;尤其是当我的层次结构具有模板化类时。
例如:
template <typename T>
class A {};
template <typename U, typename T>
class B : public A<T> {
private:
using Base = A<T>;
public:
void foo() {
// Base::foo();
}
};