文章目录

  • 一:C++关键字
  • 二:命名空间
    • (1)命名空间的作用
    • (2)命名空间的定义
      • A:命名空间的定义
      • B:注意事项
    • (3)命名空间的使用

一:C++关键字

为什么先要说关键字呢,因为在一定程度上,关键字可以反映一门编程语言语法的大致特点

C语言共计32个关键字,C++共计63个关键字

  • C语言相关关键字的精讲:【C语言重点难点精讲】关键字精讲

二:命名空间

一项工程,需要你和小王一起完成,你们两个在各自编写的模块中都编写了一个相同名字的接口(函数),等到代码合并时,却出现了错误,原因可想而知——C/C++中,变量,函数以及类会作用于全局域中,相同的名字导致了命名冲突或名字污染

C语言中并不能有效的解决这样的问题,比如,我们都知道scanf函数是C语言的标准输入输出函数,但是在下面的这个例子中,定义了一个名字叫做scanf的变量,这显然是不可取的,但是这段代码却在运行时才报错最后肯定是无法输出的,因为产生了歧义。在编译中首先展开了stdio.h头文件,scanf函数就在其中(函数名就是函数的首地址),所以执行到这一步,编译器不知道这里应该是要输出这个函数的地址还是要输出你定义的那个变量。

  • 上图中显示的是该函数的地址

当然这些问题在C++中却很容易解决——命名空间

(1)命名空间的作用

C/C++中,变量、类的名称将存在于全局作用域中,重复的名字或其他问题将导致一些不可预见的错误。命名空间可以有效的解决这个问题,使用命名空间目的在于将标识符的名称本地化,以免冲突

简单点来说,把名字关进“小黑屋”,你的变量名字和我的变量名字即便是一样的,但是本质是不一样的,使用时按照一定方式打开“小黑屋”

(2)命名空间的定义

A:命名空间的定义

定义命名空间时,要使用namespace关键字,其后紧接该命名空间的名字,然后写上“{}”,括号内即是该命名空间的成员。有点像结构体。

namespace N1//将改命名空间定义为“N1”
{int a;//可以存放变量void swap(int* a,int*b)//可以存放函数{int temp=*a;*a=*b;*b=temp;}
}

当然命名空间也是可以嵌套的

namespace N2
{int a;namespace N3{void swap(int* a,int*b){int temp=*a;*a=*b;*b=temp;}}
}

同一个工程文件允许存在多个相同名称的命名空间,编译器最后会将其合并到同一个命名空间中

B:注意事项

定义好命名空间,就相当于定义了一个新的作用域(“小黑屋”),命名空间中的所有内容都局限于该命名空间,除非使用时进行释放(打开“小黑屋”)。

如下,对于上面的那个例子中,如果定义命名空间,将不会出现错误:

(3)命名空间的使用

命名空间的使用主要有三种方法,各有优缺点

1. 命名空间名称和作用域限制符


2. 使用using将成员导入

3.暴力导入

来看看在C++中输出Hello World

#include <iostream>
using namespace std;int main()
{cout << "Hello World\n" << endl;return 0;
}

其余部分可以暂时不用管,其中的using namespace std的作用就是将相关命名空间导入,那么自然而然还会其他常见的写法

#include <iostream>int main()
{std::cout << "Hello World\n" << std::endl;return 0;
}

总的来说,日常练习时,为了方便,可以使用第三种暴力导入,但是在实际开发中,应当使用第一种和第二种,如果某个变量使用的较多的话,就使用第二种预先将这个变量名导入

2-1:C++快速入门之命名空间相关推荐

  1. 从C快速入门C++ (命名空间、引用、函数重载)

    从C快速入门C++ (命名空间.引用.函数重载) C++关键字 const const 的存储位置 结论: 命名空间 C++预处理器 和 iostream 文件 头文件名 命名空间使用 函数重载 默认 ...

  2. 一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...

  3. Flash Builder 4快速入门----学习笔记

    代码 第三章 Flash Builder 4 新特性 3.1 Package explorer(包资源管理器) 3.2 悬停时的ASDoc提示 3.3 Getter & Setter 如在一个 ...

  4. php tp3 操作绑定到类,快速入门 17:操作绑定到类

    # 快速入门(十七):操作绑定到类 如果你的应用规模比较大,每个操作方法彼此相对独立,那么就可以尝试下操作绑定到类的功能. ## 定义 系统提供了把每个操作方法定位到一个类的功能,可以让你的开发工作更 ...

  5. 深入浅出Istio:Service mesh快速入门与实践-读书笔记(By GisonWin)

    01 服务网格历史 (以后补充) 02 服务网格的基本特性 连接 微服务错综复杂,要完成其业务目标,连接问题是首要问题.连接存在于所有服务的整个lifcecycle中,用于维持服务的运行. 安全 保障 ...

  6. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  7. python快速入门 pdf-Python快速入门 (第3版) PDF 下载

    相关截图: 资料简介: 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,*部分讲解Python的基础知识,对Python进行概要的介绍:第二部分介绍Python编程的重点 ...

  8. Python3快速入门(五)——Python3函数

    Python3快速入门(五)--Python3函数 一.函数定义 1.函数定义 Python 定义函数使用 def 关键字,一般格式如下: def function_name(parameter_li ...

  9. Expression Blend实例中文教程(9) - 行为快速入门Behaviors

    在Blend强大的设计功能支持下,设计人员和开发人员可以无代码实现Silverlight/WPF动画效果,例如上文介绍的StoryBoard,就是一个典型例子,设计人员和开发人员仅需提供必要元素,即可 ...

最新文章

  1. The database returned no natively generated identity value错误解决方案
  2. 手机端部署的超分机器学习模型-MobiSR
  3. Java判断字符串是否相同
  4. 开机自启动程序关闭方法_电脑非常卡,总有软件偷偷自启动?学会这1招,永久关闭它们!...
  5. 【原】页面跳转以及表单提交中有中文的解决办法
  6. 数据库的设计与连接、站点的搭建
  7. vvv在线文档导出工具_胖观察在线协作文档导出之痛?主流协作文档导出评测
  8. 【420天】跃迁之路——程序员高效学习方法论探索系列(实验阶段177-2018.04.01)...
  9. cmmi3认证需要企业具备什么条件?
  10. jboss下载和安装
  11. Photoshop CS4 卡通角色的设计与绘制(2)
  12. WPF 使用Image控件显示图片
  13. 第三方SDK:百度地图(二)定位 + 鹰眼轨迹
  14. poj 3687(拓扑排序)
  15. java操作文件之文件重命名
  16. 字节跳动一面c++视频面试(第二个部门,效率工程部门)(一面通过)
  17. 阿里云 Redis 报出You can't read against a non-read redis.解决方案
  18. Python中的切片
  19. 组态王下拉式组合框使用教程,组态王下拉式组合框
  20. 华为OD机试 - 字符串分割

热门文章

  1. 请说说你对标签语义化的理解?
  2. centos linux下vnc server远程桌面配置详解,CentOS 6.0 VNC远程桌面配置
  3. 织梦 详情页 php,织梦DEDECMS列表页与详情页调用图集多张图片的方法
  4. 虚拟邮箱怎么设置方法_腾讯企业邮箱邮件列表白名单设置方法
  5. 高通量数据中批次效应的鉴定和处理(三)- 如何设计尽量避免批次影响
  6. Tipard Video Converter Ultimate如何旋转视频?
  7. Moody Photoshop Panel for mac(ps专业色彩调色扩展面板)
  8. 1.13 编程基础之综合应用 12 分数求和 4分 python
  9. 1.3编程基础之算术表达式与顺序执行 09 与圆相关的计算
  10. 1.4编程基础之逻辑表达式与条件分支_16三角形判断(9分)