0
点赞
收藏
分享

微信扫一扫

class与namespace的区别


class也是一个名字空间,不过他是封闭的,也就是说你只能在一个文件里面定义class包含什么(通俗点讲,就是一个class只能有一个头文件);


namespace是开放的,和class不同的是你可以在多个文件里面象同一个namespace里面添加东西。比如stl里面的东西都是在名字空间std里面,但是却定义在了多个文件里面。


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

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


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


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

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


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


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


举报

相关推荐

0 条评论