C++中namespace和class的区别

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的写法都是允许的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值