C++入门(1)
C++入门
- 1.命名空间
-
- 1.1. 问题提出
- 1.2. 解决问题——关键字:namespace
- 1.3. 命名空间的嵌套
- 2.C++的输入和输出
-
- 2.1. 输出cout
- 2.2. endl
- 2.3. 输入cin
1.命名空间
1.1. 问题提出
在一个作用域中(在一对大花括号里面),变量的名字是不能重复定义的;还有变量的名字不能和库里面的关键字或者函数同名;最后,在一个项目中,多个头文件可能定义多个变量,可能会出现变量重名的情况。C语言中无法解决变量重命名的情况,所以C++为了解决变量名冲突的问题,使用了命名空间的概念。
1.2. 解决问题——关键字:namespace
C++中有四个域:类域、命名空间域、全局域、局部域。
编译搜索变量的顺序:局部域->全局域 -> 展开了命名空间域 or 指定访问命名空间域。
要想在局部变量存在的时候访问全局变量的值的话,使用 :😗*符号
定义一个命名空间:
没有对命名空间域没有被展开,也没用指定命名空间域,编译的时候是不会在命名空间域中查找变量的。
对命名空间域的展开:
可见对命名空间域的展开,相当于命名空间里面的变量就变成了全局变量。可想而知,对命名空间域的展开对于一个大型的项目来说是很不友好的,因为在大型项目中,一开始写代码的时候,不会出现变量冲突,但是当对某一个命名空间域展开的时候,一旦出先变量名字冲突,修改起来就很麻烦。
所以,有时候我们可以指定命名空间域。
对于 :: 来说,前面没有为空白字符表示的全局域的变量;前面加命名空间的名字的时候,访问的就是该名字的命名空间里面的变量。
这样子就可以很好解决了rand变量和库里函数rand()的命名冲突了。
1.3. 命名空间的嵌套
一个命名空间里面的定义量大的时候,可能会出现命名空间的嵌套。
2.C++的输入和输出
std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
当我们需要大量输出的时候的时候,需要每次添加std::,会显得很麻烦。所以,我们可以对特定的命名空间里面的常用变量进行展开使用
效果一样的
2.1. 输出cout
解释:显示屏幕上
它可以自动识别显示的类型。
<<流插入运算符
2.2. endl
相当于换行符。
2.3. 输入cin
>>流提取运算符符
说明:
- cin可以对变量进行输入,自动识别输入的数据类型,不需要取地址符号;
- C++中仍然可以使用C语言的函数。