C ++相当于“超级”?

时间:2010-12-12 21:43:37

标签: c++

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

C++ -> GenericBase::SomeVirtualFunction();
Java -> super.someVirtualMethod();

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

由于

4 个答案:

答案 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;
};