最近,我看到了一个奇怪的C++特性:注入类名.
class X { };
X x1;
class X::X x2; // class X::X is equal to X
class X::X::X x3; // ...and so on...
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚为什么这个功能是必要的.有没有需要此功能的练习?
我听说旧C++中不存在这个功能.然后,什么时候介绍?C++ 03?C++ 11?
我不知道如何解释:
namespace A
{
struct B
{
static void f()
{
}
};
}
int main()
{
A::B::B::B::B::B::B::B::B::B::B::f();
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以这样做:
A::B::B::B::B::B::B::B::B::B::B::f();
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样。