我发现以下课堂声明难以理解:
class App::Impl
班级名称现在是App :: Impl吗?范围运算符::
在类名中做了什么?
答案 0 :(得分:2)
范围解析运算符(::)用于标识和指定标识符所引用的上下文。所以这里App
指的是类Impl
所属的名称空间。我们可以通过在不同的命名空间中对它们进行子范围化来使不同的类具有相同的名称。在这种情况下,我们需要指定类的名称空间。
namespace X{
class Name {};
}
namespace Y{
class Name {};
}
我们可以使用X::Name
和Y::Name
答案 1 :(得分:1)
在C ++中::
是Scope Resolution Operator。它用于告诉编译器namespace或类属于什么。
在这种情况下,App::Impl
告诉编译器您正在谈论属于Impl
的{{1}}。
答案 2 :(得分:1)
App是您调用Impl的类的NameSpace,可以在更多具有差异的NameSpaces中定义。