【C++】基础入门(一):域、命名空间、C++输入&输出

【C++】基础入门(一):域、命名空间、C++输入&输出_第1张图片


目录

1.域

1.1.域的使用

1.2. :: 域作用限定符

2.命名空间

2.1.命名空间的性质

2.1.1. 命名空间里面除了可以定义变量之外,还可以定义函数、类型。

2.1.2.命名空间可以多重嵌套

2.1.3.在编译阶段,同一级相同名字的命名空间可以自动合并

2.2.命名空间的使用

2.2.1.指定访问

2.2.2.全部展开

2.2.3.部分展开

3. C++输入&输出


在介绍命名空间之前,先要介绍一下的概念:


1.域

作用域,和访问还有生命周期有关系。

1.1.域的使用

  1. 在同一个域里面不能重复定义同一个名称的变量。
  2. 在不同的域里面能定义同一个名称的变量。

以c语言为例:

  在全局域中定义一个 a 变量,就不能继续在全局域中定义a变量:

【C++】基础入门(一):域、命名空间、C++输入&输出_第2张图片

 但是可以在局部域里面在定义一个a变量:

【C++】基础入门(一):域、命名空间、C++输入&输出_第3张图片

 局部优先原则:【C++】基础入门(一):域、命名空间、C++输入&输出_第4张图片


1.2. :: 域作用限定符

  请注意: :: 域作用限定符左边是空白就默认代表访问的是全局域。

【C++】基础入门(一):域、命名空间、C++输入&输出_第5张图片

【C++】基础入门(一):域、命名空间、C++输入&输出_第6张图片


2.命名空间

C++为什么需要命名空间?

由于 C 在大型的项目中非常容易出现命名冲突,所以就有了C++命名空间的由来。

命名空间就是定义一个域:命名空间域。

如果我们定义的变量名和库里面的名称冲突了怎么办?

【C++】基础入门(一):域、命名空间、C++输入&输出_第7张图片

 我们就可以使用命名空间来解决:【C++】基础入门(一):域、命名空间、C++输入&输出_第8张图片

 我们来演示一个编译器查找规则【C++】基础入门(一):域、命名空间、C++输入&输出_第9张图片

【C++】基础入门(一):域、命名空间、C++输入&输出_第10张图片

 我们可以通过域作用限定符,来访问命名空间域中的变量:【C++】基础入门(一):域、命名空间、C++输入&输出_第11张图片


2.1.命名空间的性质

2.1.1. 命名空间里面除了可以定义变量之外,还可以定义函数、类型。

【C++】基础入门(一):域、命名空间、C++输入&输出_第12张图片


2.1.2.命名空间可以多重嵌套

【C++】基础入门(一):域、命名空间、C++输入&输出_第13张图片


2.1.3.在编译阶段,同一级相同名字的命名空间可以自动合并

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

  为了避免冲突,c++把标准库的东西定义到了自己官方的命名空间,这个命名空间的名称是 std,stdC++官方库内容定义的命名空间。


2.2.命名空间的使用

命名空间的三种使用方式:

2.2.1.指定访问

在访问的对象前,加命名空间名称及作用域限定符。

【C++】基础入门(一):域、命名空间、C++输入&输出_第14张图片 


2.2.2.全部展开

使用using namespace + 命名空间名称引入。

【C++】基础入门(一):域、命名空间、C++输入&输出_第15张图片


2.2.3.部分展开

使用using将命名空间中某个成员引入。

【C++】基础入门(一):域、命名空间、C++输入&输出_第16张图片


3. C++输入&输出

  使用cout标准输出对象(控制台)cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。

   <<  流插入运算符  >> 流提取运算符

  实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,将在之后的博客介绍。

【C++】基础入门(一):域、命名空间、C++输入&输出_第17张图片

  cout和cin是全局的流对象endl是特殊的C++符号,表示换行输出,他们都包含在< iostream >头文件中。

cout 是 console out的简写,控制台输出,特点是自动识别类型。

cin 是 console in简写,控制台输入,也可以自动识别类型。

【C++】基础入门(一):域、命名空间、C++输入&输出_第18张图片

 endl换行,是endline的意思,换行。

  使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。

【C++】基础入门(一):域、命名空间、C++输入&输出_第19张图片  

劣势:

  在输出时,指定如double类型的输出位数较为麻烦。在这种情况下推荐使用c语言的方式打印。

  总而言之最后实现时,那种更方便就优先使用那种。


最后

  终于迈入C++了,继续加油啊!!

【C++】基础入门(一):域、命名空间、C++输入&输出_第20张图片

你可能感兴趣的:(C++修炼之旅,c++,开发语言,命名空间,域,C++输入输出)