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

时间:2020-07-08 01:23:39

标签: c++ class enums namespaces

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

在C ++中,有一个namespace和一个class,命名空间不是类。您的代码有效,因为您可以在类内嵌套枚举,结构,类等。

答案 2 :(得分:3)

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

没有类不是名称空间。

但是类具有作用域,就像名称空间具有作用域一样。