命名空间和命名空间之间的区别是什么?班?

时间:2014-07-27 00:26:03

标签: c++ class namespaces

在C ++ 13/4环境中,命名空间和类之间有什么区别?

我看待它的方式;

namespace foo
{
    int a : 4;
    int b : 4;
}

class bar
{
    public:
        int a = 0;
        int b = 0;
}

是同样的事情......

是的,他们的访问方式不同;

...命名空间

foo::a=20;
foo::b=30;

...类

bar alpha;
alpha.a ...
alpha.b ...

但总的来说,一个优于另一个的优势是什么?

2 个答案:

答案 0 :(得分:4)

有很多不同之处。命名空间是名称的分组机制,无论或多或少。另一方面,课程:

  • 是类型。
  • 可以实例化。
  • 可以源自。
  • 可以拥有公共成员,受保护成员和私人成员。
  • 可以拥有虚拟功能。

等等。

如果您发现自己想知道是否应该使用命名空间或类,那么您可能只是在寻找一种控制名称范围的方法 - 所以选择很明确:使用命名空间。

答案 1 :(得分:0)

命名空间允许您将实体分组为具有本地范围而不是全局范围。例如,这在标准库std中很常见。

一组示例名称可能是coutcin等流。

不使用命名空间,您必须定义命名空间范围std

std::cout << "Hello, world!";

使用命名空间,您已经显示了范围一次,不再需要再次声明它。

using namespace std;
cout << "Hello, world!";

但是,在后一种情况下,您无法使用另一个名为cout的变量,该变量是用户定义的或包含在另一个库中。