cpp命名空间

命名空间

1.目的:
存放本应在全局域中的类名,变量名,函数名,将他们封装,让名字(标识符)在不调用的情况下可以使用且不造成命名冲突和名字污染.如可以用cout作为变量,int cout = 10;
2 定义:
2.1如c语言中的结构体,在使用时需要带上一个关键字namespace,后面跟上命名空间的名字,加上{},不一样的是最后无需添上双引号.如namespace wjc{} ,
2.2命名空间可以嵌套使用,如namespace wjc{namespace wjp{int a=10;}
2.3同名的命名空间最终会合并到一起,如namespace wjc{int a=10;}和namespace wjc{int b=20;}可以等价于namespace wjc{a=10;b= 20;}
3 使用
3.1全部使用,靠关键字using使用命名空间的全部如using namespace wjc;这样相当于把wjc这个作用域放到全局域中,这样子可以方便全部使用,但失去了命名空间的作用(目的),这种方法可以在日常训练中使用,因为不会涉及到太多命名冲突,但不建议在做项目时使用.
3.2部分使用,靠关键字using使用命名空间的某个成员如using wjc![请添加图片描述](https://i-blog.csdnimg.cn/direct/b92cfd1ced3f4ed0bb6ad84b26ba8341.png) :: a ; 这样子可以在即使用想要的成员又不会带出不需要的;这样的方法最推荐使用.这两种方法都要在main函数前使用
3.3单次使用,在main函数中想要调用命名空间的内容时可以用wjc::a 来调用wjc命名空间中的a变量;这样的方法安全但繁琐,不建议使用.
tip 我们常见的using namespace std;中的std就是一个命名空间,它存放了我们最开始写的库函数的标识符如库函数
#<iostream>,为了兼容c语言#<iostream.h>以.h结尾的库函数也可以在c++中使用,其存放在全局域中不需要使用命名空间.
4 区分
类与命名空间
异:
4.1 作用上,
命名空间是一种逻辑上的划分,它提供了一种将标识符(如变量名、函数名、类名等)分组的机制,用于避免命名冲突。
类是一种用户自定义的数据类型,它封装了数据(成员变量)和操作数据的函数(成员函数),是面向对象编程的核心概念之一。
4.2 命名空间不能被实例化,它只是一个标识符的集合。
可以被实例化,通过定义对象来使用类的功能。
4.3定义,
命名空间可以用关键字using
类可以用点运算符name.menber(对象),通过箭头运算符访问name->menber(对象的指针)

4.4都是一个作用域,同样起到了封装的作用
4.5作为作用域可以使用 ::作用域解析运算符.
命名空间的使用上面已写;
类使用作用域解析运算符时有以下要点;
可以通过作用域解析运算符 :: 来访问类的静态成员、在类的外部定义成员函数时,以及访问嵌套类。
非静态成员:不能直接使用 :: 来访问,需要通过类的对象来访问(就是哪两种).
心得:第一次写博客,感觉有点不知道怎么写,有很多东西感觉没有必要写进去,比如区分哪里,我感觉不是所有的人都有这样的疑问,只是我自己有一点搞不清楚所以查了一下給写上去了,还有感觉文字有点太啰嗦了,不太适合别人阅读,但是说实话我自己读的很舒服,不过作为一篇博客我认为还是有必要改掉这个毛病,希望以后越做越好…就这样吧要睡觉了,再码字就要吵醒舍友了.

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值