C++相当于"超级"?

jma*_*erx 17 c++

在Java中,不使用范围运算符,而是使用ex:

C++ -> GenericBase::SomeVirtualFunction();
Java -> super.someVirtualMethod();
Run Code Online (Sandbox Code Playgroud)

在C++中是否有这样的东西,或者由于多重继承,这在C++中是否有意义?

谢谢

Mar*_*wis 17

有一种在每个类定义超类型定义的约定.

  • ***死***... (11认同)

ice*_*ime 5

C++ 中没有这样的东西,尽管您可以提供自己的typedef

struct Derived : Base
{
    typedef Base super;
};
Run Code Online (Sandbox Code Playgroud)


Öö *_*iib 5

微软编译器具有(由C++标准委员会拒绝)扩展__super.

编辑:超级可能会混淆读者的代码.由于C++中的多重继承,最好更明确.多重继承已经非常复杂.AFAIK讨论了关于模板的有用性,这些模板在意识到任何人都可以在需要时可以输入super的时候平静下来.

  • 我也使用__super关键字,如果你要更改基类和东西,它会有很大帮助.特别是在MFC中.遗憾的是它不标准,非常方便. (2认同)

小智 5

Martin的链接中的typedef技巧非常有效(这也是部分原因,这就是为什么C++没有超级或继承的关键字AFAIR.)我们唯一需要关心的是typedef应该在私有部分.不要将它放在受保护的或公共部分中,否则,派生类可能会错误地使用typedef来引用其祖父母而不是其父母.