C ++中的类名称空间吗?我问这是因为以下代码有效。有人可以解释为什么吗?
代码:
#include <iostream>
class MainClass{
public:
enum Bool{False, True};
MainClass(){
std::cout << "MainClass constructor" << True << std::endl;
}
~MainClass(){
std::cout << "MainClass destructor" << std::endl;
}
};
int main(){
MainClass::Bool myvar = MainClass::False << std::endl; //Why is this line valid?
std::cout << myvar;
return 0;
}
答案 0 :(得分:5)
类不是名称空间。但是Bool
枚举是在MainClass
的范围内定义的,因此适用范围解析运算符::
。
答案 1 :(得分:3)
在C ++中,有一个namespace
和一个class
,命名空间不是类。您的代码有效,因为您可以在类内嵌套枚举,结构,类等。
答案 2 :(得分:3)
C ++中的类名称空间吗?
没有类不是名称空间。
但是类具有作用域,就像名称空间具有作用域一样。