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