以下代码将帮助我直接向您提出我的问题:
#include<iostream>
class foo {
public:
class bar {
public:
bar(int a) : m_a(a) {}
void say() { std::cout << m_a << std::endl;}
private:
int m_a;
};
};
int main()
{
foo::bar b(3);
b.say();
}
Run Code Online (Sandbox Code Playgroud)
如你所见,为了声明类bar的对象,我们使用类似语法"foo :: bar"的完全命名空间,尽管实际上bar只是类foo中的一个embebed类类型.我的问题是类本身的范围是否是c ++中的命名空间?
该类不是命名空间,而是范围.你自己已经使用过这个术语了.命名空间是一个范围.类也是范围.该::运营商是一个范围解析操作.范围而非命名空间是在这种情况下可以充当"共同点"的基本术语.范围是您可以::在左侧使用带有类和命名空间的运算符的原因.