C++中namespace和class的区别

来源:互联网 发布:大数据先进技术研究院 编辑:程序博客网 时间:2024/05/21 22:55

class和namespace都是名称空间

但是class是封闭的,也就是class只能有一个头文件

namespace是开放的,特可以在多个文件里向同一个namespace里面添加东西,例如stl里面的东西都在名字空间std里面,但却定义在了多个文件里面。

class做名称空间时,与namespace形式上类似

但是namespace是开放的,可以追加内容,而class是一次性的

另外,对class A的成员M用A::M并不总是允许的,这种方法只在两种情况写有效:

1.类的成员函数引用本类(含祖先类)的成员

2.其它函数引用类的静态成员

因为类中定义了一个(非静态)成员变量,并没有定义实体,只是定义了一个名字。只有创建了类的实例(对象),成员变量的实体才存在。

但是namespace不存在这个问题,因为namespace中定义的变量,就是一个实体,在任何情况下(只要在可见域内)。对namespace A,A::M的写法都是允许的。

0 0
原创粉丝点击