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

问题描述 投票:1回答:2

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

c++
2个回答
3
投票

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


1
投票

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

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

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

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


此外,可能有模板类:

template<typename T>
struct bar{};

不可能有名称空间模板。


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


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.