C++命名空间 namesapce

最近在使用命名空间,想把命名空间总结下,现在只是简单的记录下使用的心得,后期会进行进一步的整理

1.就是我们是把我们的.cpp文件和.h文件都使用相同的命名空间,如果不这样做 ,会可能出现下列问题。

1.1 只在头文件中使用,那么要包含头文件,使用头文件里声明的类或者方法时,要using namespace ...

而在.cpp中没有使用  ,在连接的时候,会报链接错误。

1.2只在cpp中使用,那么包含头文件后,编译期不会报错,但是在链接期因为找不到实现也会报错。

所以是在.h和.cpp中同时使用。

2.命名空间的位置

无论是在.h还是在.cpp中,命名空间的位置一定是在,#include之后,进行使用,因为这样的话,才能保证原有的.h中的命名空间是完整的,如果你在#include之上,写了自己的空间,你相当于把头文件里外又增加了命名空间。

3.在一个工程下的多个文件里,一般我们使用同一个命名空间,同时如果一个工程下的命名空间相同,那么相互之间就是在一个大的命名空间下,就不用在using  namespace ...了,但是这样也就不能避免你在不同文件之间的冲突了,没有起到命名空间该有的作用了,所以真正使用的时候,最好还是粒度小一点,最好是以文件为单位。

4. 匿名命名空间,为了不让其他文件对你的定义进行引用,通常我们会使用你匿名命名空间,直接使用namespace ,而不加名字,所以只有本文件可以进行使用。

5.命名空间虽然能解决名称冲突,但是不是百分百,如果你的命名空间冲突了,也会出问题

6.当 a文件里有命名空间   test::field1::a,而b文件在命名空间

test::field2::a,此时你引用命名空间a的内容时候,可以直接使用field1::a.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值