您的位置:首页 > 编程语言 > C语言/C++

C++中namespace和class的区别

2016-07-11 09:58 561 查看
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的写法都是允许的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: