C++中命名空间和类的区别

在本节中,我们将看到 C++ 中命名空间和类之间的区别。命名空间和类是两个不同的概念。类是数据类型。类基本上是结构的扩展版本。类可以包含数据成员和作为成员的函数,但命名空间可以通过将变量和函数组合为一个来包含变量和函数。

命名空间不能创建为对象。这个概念被用作区分相似函数、类、变量等的附加信息。变量、具有相同名称的函数可以放在不同的命名空间中。

现在让我们指出命名空间和类的一些重要区别。

  • 命名空间用于创建一组标识符,因此它们不会发生冲突。通过使用类,我们必须创建该类的一个实例,但对于命名空间而言,情况并非如此。

  • 对于命名空间,我们使用 'using' 声明。对于类,除非我们从中派生,否则这是不可能的。

  • 我们可以重新打开命名空间并跨翻译单元添加更多元素。这不能使用类来完成。

namespace my_namespace {
   int function1();
}
namespace my_namespace {
   int function1();
}

  • 对于类,以下代码不好:

class my_class {
   int function1();
};
class my_class {
   int function1();
};

  • 我们可以使用未命名的命名空间,这很好,但我们不能使用未命名的类,这会产生错误。

namespace{ //Legal
   int function1();
};
class { //制造错误
   int function1();
};