在Java中,不使用范围运算符,而是使用ex:
C++ -> GenericBase::SomeVirtualFunction();
Java -> super.someVirtualMethod();
在C ++中是否有这样的东西,或者由于多重继承而在C ++中没有意义?
由于
答案 0 :(得分:17)
答案 1 :(得分:5)
微软编译器已经(被C ++标准委员会拒绝)扩展名 __ super 。
编辑:超级可能会混淆代码的读者。由于C ++中的多重继承,最好更明确。多重继承已经非常复杂。 AFAIK讨论了关于模板的有用性,这些模板在意识到任何人都可以在需要时可以输入super的时候平静下来。
答案 2 :(得分:5)
Martin的链接中的typedef技巧非常有效(这就是为什么C ++没有超级或继承的关键字AFAIR的部分原因。) 我们唯一需要关心的是typedef应该在私有部分。不要把它放在受保护或公共部分,否则,派生类可能会错误地使用typedef来引用其祖父母而不是其父母。
答案 3 :(得分:4)
在C ++中没有这样的东西,尽管你可以提供自己的typedef
:
struct Derived : Base
{
typedef Base super;
};