名称空间和类之间的主要区别是什么?

时间:2020-04-30 17:09:03

标签: c++

为什么我应该使用namespace而不是class?主要区别在哪里?例如,在JavaScript中,namespace可以由类来模拟。那么,创建命名空间而不是类的重点是什么?

2 个答案:

答案 0 :(得分:3)

namespace只是分离和分组标识符的一种方法,以避免在编译时命名冲突。 class是实际类型,您可以为其分配内存并为其创建实例。

答案 1 :(得分:2)

考虑一个类似的问题:办公椅和火车之间的主要区别是什么?您可以坐在火车上模仿办公椅。用办公椅代替火车有什么意义?

类是一种类型。可以实例化类型的对象。例如:

class foo{}; // a class
foo f;       // this variable is instance of the class

命名空间不是类型。无法创建名称空间的实例。


此外,可能有模板类:

template<typename T>
struct bar{};

不可能有名称空间模板。


另一方面,可能有匿名名称空间,并且有可能使用using声明将名称空间的成员带入另一个名称空间,而对于类的成员则是不可能的。


那么,创建名称空间而不是类的重点是什么?

我们需要将名称分组为较小的范围,以避免名称冲突。那就是名称空间的用途。

类也具有一定的范围,但是当我们不需要类型时,定义类是没有意义的。

相关问题