C ++是否有一个允许从派生类引用基类型的关键字?

时间:2018-04-26 13:50:48

标签: c++ inheritance

举个例子:

class some_base
{
 ... // some valid code
};

class derived : public some_base
{
  ...

  derived& operator=( const derived& that )
  {
    some_base::operator=( that );

    ...

    return *this;
}; 

如果我们能够在derived's assign运算符中使用某个关键字而不是some_base限定符,那就太好了。编译器知道我们继承的类型,所以在我看来这不是问题。

所以问题是С++提供了一个辅助关键字来简化编码器的生命吗?

2 个答案:

答案 0 :(得分:3)

  

编译器知道我们继承的类型,所以它不是问题

除非你派生自多个基类 - 在这种情况下,编译器将如何决定它是哪一个?

所以不,没有这样的关键字,你所能做的就是把它放到你的编码标准中。

答案 1 :(得分:1)

某些编译器提供基类关键字作为扩展。似乎名称 super 的变体很常见,例如Visual C++'s __super(我希望作为预期的插件替代品,英特尔的编译器也支持__super)。但是标准C ++没有提供这样的东西,尽管there was once a proposal

要实现相同的目标,只需在每个类中定义类型别名Base

another thread中,用户Roddy认为这样的别名应为private“,以避免在”继承“时出现问题。从类中错误地省略,但子类尝试使用它“。