1

可能重复:
为什么编译器支持冗余范围限定,它是否合法?

我真的可以写代码吗

class Foo
{
public:
    Foo();
};

Foo::Foo::Foo::Foo::Foo::Foo() {}

gcc 编译它。添加此功能的原因是什么?

4

1 回答 1

3

特点是类型的名称被注入到类作用域内,即在类内隐含typedef Foo Foo;了 sorts Foo

该功能在语言中,因为在几个构造中需要嵌套类型。例如,当通过显式命名要选择覆盖器的层次结构级别来禁用动态调度时 ( obj.Base::f())。

原始列表有大约 10 个奇怪的结构,必须为其提供名称,并且通过使嵌套名称在所有上下文中可用来简化它,这反过来意味着它允许您编写有趣的语法。

于 2012-08-29T17:07:49.217 回答