文章目录

  • 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开头,比如glBeginglEnd
#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、命名空间相关推荐

  1. Cherno C++系列笔记17——P52~P54 处理多返回值、模板、堆和栈内存的比较

    文章目录 1.P52 处理多返回值 2.P53 模板 2.1.模板函数 2.2.模板类 2.2.1.将数组大小作为模板参数 2.2.2.将数组大小和数组类型都作为模板参数 2.3.何时使用模板 3.P ...

  2. Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

    2019独角兽企业重金招聘Python工程师标准>>> 感谢听D同学赞助的Demo. 那怎样让它运行在vs中呢: 1 使用cocos2d-x-2.2\tools\project-cr ...

  3. 跟着鸟哥学Linux系列笔记1

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...

  4. Java系列笔记(4) - JVM监控与调优【转】

    Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例       光说不练假把式,学习Java GC机制的目的是为了实用,也 ...

  5. Cocos2dx游戏开发系列笔记3:牛刀小试-忍者飞镖射幽灵的Demo

    2019独角兽企业重金招聘Python工程师标准>>> 就是这个例子,应该很简单,主要用到的有:精灵的移动,触摸,碰撞检测. 赶紧搞定,待会还要陪哲哲来几局爱消除. 首先在Scene ...

  6. GB28181系列笔记-语音对讲功能

    GB28181系列笔记-注册与保活 GB28181系列笔记-设备目录查询 GB28181系列笔记-实时流请求 GB28181系列笔记-历史流查询与请求 GB28181系列笔记-语音对讲功能 GB281 ...

  7. Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

    懒骨头(http://blog.csdn.net/iamlazybone  QQ124774397 青岛 ) 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜 ...

  8. Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)...

    2019独角兽企业重金招聘Python工程师标准>>> 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜欢这样与哲哲共勉 多少个夜晚 一张长 ...

  9. 数据库,计算机网络、操作系统刷题笔记20

    数据库,计算机网络.操作系统刷题笔记20 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其s ...

  10. 机器学习-白板推导系列笔记(二十八)-BM

    此文章主要是结合哔站shuhuai008大佬的白板推导视频:玻尔兹曼机_147min 全部笔记的汇总贴:机器学习-白板推导系列笔记 参考花书20.1 一.介绍 玻尔兹曼机连接的每个节点都是离散的二值分 ...

最新文章

  1. Python学习十四:filter()
  2. 博士真正搞科研的姿势,是这样的
  3. config kubectl_使用kubectl管理k8s集群(三十)
  4. ConstraintLayout 不能作为activity的根节点,否则fragment显示不出来
  5. 陕西省计算机二级报名流程,计算机二级考试报名流程
  6. 限时购校验小工具dubbo异步调用实现限
  7. 请求重定向与请求转发的比较(HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法)...
  8. VS2013开发Windows服务项目
  9. JDBC常用接口详解
  10. ArcView GIS 应用与开发技术(3)-地理要素的显示和标注
  11. pt和px的区别和相互转换关系
  12. 入市炒股 不如入淘创业 盘点淘宝十大新职业
  13. 螺旋城的灾难完全攻略及地图
  14. mysql语句占位符_sql语句中的占位符?有什么作用
  15. 详解 PerformanceResourceTiming API,咦,这货真的干!
  16. 全球及中国板材制造行业销售前景与产销规模分析报告2022-2028年
  17. 微信开发者工具-真机调试,可查看接口信息
  18. java 重写equals方法的种种“坑”
  19. JQuery中常用的 属性选择器
  20. 验证码的几种方式-普通图形验证码,滑动拼图,图中点选

热门文章

  1. php composer 安装报错 Package fxp/composer-asset-plugin has a PHP requirement incompatible with your PHP
  2. java能解决数学题目吗_Java竟然可以做数学应用题?
  3. 新年新气象,90行代码菜鸟用Python制作小姐姐新年日历天气卡,送人太有面子啦!...
  4. c语言可以绘制中国地图源码,echarts画中国地图,省市区地图分享
  5. 产品经理眼中的SLAM技术学习路径
  6. 四川2021年高考成绩位次查询,2021年填报志愿数据:四川所有本科大学近三年分数线、对应位次排行榜...
  7. 百度云离线下载含有违规内容检测方法分析
  8. CC2652RB硬件I2C读取FXOS8700CQ加速度传感器
  9. python输入名字配对情侣网名_输入名字自动取情侣网名,输入名字自动取网名
  10. web前端基础案例-开发QQ空间旋转时光轴