班级成员的额外资格

时间:2012-08-29 17:02:53

标签: c++

  

可能重复:
  Why are redundant scope qualifications supported by the compiler, and is it legal?

我真的可以编写像

这样的代码吗?
class Foo
{
public:
    Foo();
};

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

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

1 个答案:

答案 0 :(得分:3)

该特性是类型的名称被注入类范围内,也就是说,类typedef Foo Foo;中存在一个隐式的Foo排序。

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

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