可能重复:
Why are redundant scope qualifications supported by the compiler, and is it legal?
我真的可以编写像
这样的代码吗?class Foo
{
public:
Foo();
};
Foo::Foo::Foo::Foo::Foo::Foo() {}
gcc编译它。添加此功能的原因是什么?
答案 0 :(得分:3)
该特性是类型的名称被注入类范围内,也就是说,类typedef Foo Foo;
中存在一个隐式的Foo
排序。
该功能在语言中,因为在几个结构中需要嵌套类型。例如,通过显式命名要选择覆盖的层次结构级别(obj.Base::f()
)来禁用动态分派。
原始列表有大约10个奇怪的结构,其名称必须存在,并且通过在所有上下文中使嵌套名称可用来简化它,这反过来意味着它允许你写的有趣语法。