命名空间和类之间有什么区别?

What's the difference between namespaces & classes?

本文关键字:什么 区别 之间 命名空间      更新时间:2023-10-16

在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 ...

但总的来说,一个比另一个有什么优势呢?

有很多不同。名称空间是名称的分组机制,仅此而已。另一方面,classes:

  • 类型。
  • 可以被实例化
  • 可衍生自。
  • 可以拥有public、protected和private成员。
  • 可以有虚函数

等等

如果您发现自己不知道应该使用名称空间还是使用类,那么您可能只是在寻找一种控制名称作用域的方法——因此选择很明确:使用名称空间。

名称空间允许您将实体分组为具有局部作用域而不是全局作用域。例如,这在标准库std中很常见。

一组名称可以是流,如coutcin

如果不使用名称空间,则必须定义名称空间范围std

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

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

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

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