举个例子:
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
限定符,那就太好了。编译器知道我们继承的类型,所以在我看来这不是问题。
所以问题是С++提供了一个辅助关键字来简化编码器的生命吗?
答案 0 :(得分:3)
编译器知道我们继承的类型,所以它不是问题
除非你派生自多个基类 - 在这种情况下,编译器将如何决定它是哪一个?
所以不,没有这样的关键字,你所能做的就是把它放到你的编码标准中。
答案 1 :(得分:1)
某些编译器提供基类关键字作为扩展。似乎名称 super
的变体很常见,例如Visual C++'s __super
(我希望作为预期的插件替代品,英特尔的编译器也支持__super
)。但是标准C ++没有提供这样的东西,尽管there was once a proposal。
要实现相同的目标,只需在每个类中定义类型别名Base
。
在another thread中,用户Roddy认为这样的别名应为private
“,以避免在”继承“时出现问题。从类中错误地省略,但子类尝试使用它“。