Cherno C++系列笔记20——P60~P61 为什么不使用using namespace std、命名空间
文章目录
- 1.P60 推荐不使用using namespace std
- 2.P61 命名空间
1.P60 推荐不使用using namespace std
参考: 视频 笔记
说起来这节的内容很简单,就是讲了使用using namespace std
的话,如果两个库中有同名的函数可能会产生函数错误调用的问题。这个问题很难排查,所以Cherno建议不要使用using namespace std
,他自己使用第三方库的时候都是在前面写上命名空间,而使用自己的库的时候才会使用using namespace
。
但是我觉得由于倒是可以使用using namespace std
,因为程序开发中使用最多的还是std
标准库,而其他的第三方库或者自己命名空间的都是少量的。因此可以使用std的命名空间,而其他第三方库不使用命名空间。这样不会存在命名空间的问题。
注意:永远不要在头文件中使用命名空间using namesapce xxx
。因为头文件是会互相包含的,最后代码文件多了都自己都搞不清哪些地方使用了using namespace xxx
。
2.P61 命名空间
参考:视频 笔记
- 命名空间的主要目的是避免命名冲突,类本身也是一种命名空间。
比如上一节的代码,不使用命名空间就会出错,因为两个函数一模一样。使用了命名空间就不会出错,但是在C语言中没有命名空间,因此只能修改函数名来避免这种冲突。比如OpenGL
库,它的每一个函数都是gl
开头,比如glBegin
,glEnd
。
#include<iostream>
#include<string>//namespace apple {void print(const char* text){std::cout << text << std::endl;}
//}//namespace orange {void print(const char* text){std::string temp = text;std::reverse(temp.begin(), temp.end());std::cout << temp << std::endl;}
//}int main()
{print("Hello");std::cin.get();
}
- 若
apple
有多个函数比如print_again
,但只想单独引入print
函数,可以使用using apple::print
。
#include<iostream>
#include<string>namespace apple {void print(const char* text){std::cout << text << std::endl;}void print_again(){}
}namespace orange {void print(const char* text){std::string temp = text;std::reverse(temp.begin(), temp.end());std::cout << temp << std::endl;}
}int main()
{// 只引入apple命名空间下的print函数using apple::print; print("Hello");apple::print_again();std::cin.get();
}
- 命名空间可以嵌套,比如:
namespace apple{namespace function{}
}using namespace apple::function;
// 或者分两句写:
using namespace apple;
using namespace function;
- 命名空间可以重命名,比如:
namespace a = apple;
- 注意namespace有作用域,如果在文件头上定义的,那么对整个文件有效。如果在作用域内定义的,那么就只对这个作用域有效,比如:
namespace apple {void print(const char* text){std::cout << text << std::endl;}
}int main()
{using namespace apple; // apple只存在于main函数的作用域下print("Hello");std::cin.get();
}
Cherno C++系列笔记20——P60~P61 为什么不使用using namespace std、命名空间相关推荐
- Cherno C++系列笔记17——P52~P54 处理多返回值、模板、堆和栈内存的比较
文章目录 1.P52 处理多返回值 2.P53 模板 2.1.模板函数 2.2.模板类 2.2.1.将数组大小作为模板参数 2.2.2.将数组大小和数组类型都作为模板参数 2.3.何时使用模板 3.P ...
- Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
2019独角兽企业重金招聘Python工程师标准>>> 感谢听D同学赞助的Demo. 那怎样让它运行在vs中呢: 1 使用cocos2d-x-2.2\tools\project-cr ...
- 跟着鸟哥学Linux系列笔记1
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...
- Java系列笔记(4) - JVM监控与调优【转】
Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也 ...
- Cocos2dx游戏开发系列笔记3:牛刀小试-忍者飞镖射幽灵的Demo
2019独角兽企业重金招聘Python工程师标准>>> 就是这个例子,应该很简单,主要用到的有:精灵的移动,触摸,碰撞检测. 赶紧搞定,待会还要陪哲哲来几局爱消除. 首先在Scene ...
- GB28181系列笔记-语音对讲功能
GB28181系列笔记-注册与保活 GB28181系列笔记-设备目录查询 GB28181系列笔记-实时流请求 GB28181系列笔记-历史流查询与请求 GB28181系列笔记-语音对讲功能 GB281 ...
- Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
懒骨头(http://blog.csdn.net/iamlazybone QQ124774397 青岛 ) 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜 ...
- Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)...
2019独角兽企业重金招聘Python工程师标准>>> 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜欢这样与哲哲共勉 多少个夜晚 一张长 ...
- 数据库,计算机网络、操作系统刷题笔记20
数据库,计算机网络.操作系统刷题笔记20 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其s ...
- 机器学习-白板推导系列笔记(二十八)-BM
此文章主要是结合哔站shuhuai008大佬的白板推导视频:玻尔兹曼机_147min 全部笔记的汇总贴:机器学习-白板推导系列笔记 参考花书20.1 一.介绍 玻尔兹曼机连接的每个节点都是离散的二值分 ...
最新文章
- Python学习十四:filter()
- 博士真正搞科研的姿势,是这样的
- config kubectl_使用kubectl管理k8s集群(三十)
- ConstraintLayout 不能作为activity的根节点,否则fragment显示不出来
- 陕西省计算机二级报名流程,计算机二级考试报名流程
- 限时购校验小工具dubbo异步调用实现限
- 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)...
- VS2013开发Windows服务项目
- JDBC常用接口详解
- ArcView GIS 应用与开发技术(3)-地理要素的显示和标注
- pt和px的区别和相互转换关系
- 入市炒股 不如入淘创业 盘点淘宝十大新职业
- 螺旋城的灾难完全攻略及地图
- mysql语句占位符_sql语句中的占位符?有什么作用
- 详解 PerformanceResourceTiming API,咦,这货真的干!
- 全球及中国板材制造行业销售前景与产销规模分析报告2022-2028年
- 微信开发者工具-真机调试,可查看接口信息
- java 重写equals方法的种种“坑”
- JQuery中常用的 属性选择器
- 验证码的几种方式-普通图形验证码,滑动拼图,图中点选
热门文章
- php composer 安装报错 Package fxp/composer-asset-plugin has a PHP requirement incompatible with your PHP
- java能解决数学题目吗_Java竟然可以做数学应用题?
- 新年新气象,90行代码菜鸟用Python制作小姐姐新年日历天气卡,送人太有面子啦!...
- c语言可以绘制中国地图源码,echarts画中国地图,省市区地图分享
- 产品经理眼中的SLAM技术学习路径
- 四川2021年高考成绩位次查询,2021年填报志愿数据:四川所有本科大学近三年分数线、对应位次排行榜...
- 百度云离线下载含有违规内容检测方法分析
- CC2652RB硬件I2C读取FXOS8700CQ加速度传感器
- python输入名字配对情侣网名_输入名字自动取情侣网名,输入名字自动取网名
- web前端基础案例-开发QQ空间旋转时光轴