类 是 C++ 中的名称空间吗?

Are classes namespaces in C++?

类 是 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;
}

C++中有namespace,也有class,命名空间不是class。您的代码是有效的,因为您可以在 classes.

中嵌套枚举、结构、classes 等

类 不是名称空间。但是 Bool 枚举是在 MainClass 的范围内定义的,因此适用范围解析运算符 ::

Are classes namespaces in C++?

否 类 不是命名空间。

但是类有一个范围,就像命名空间有一个范围一样。