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++为了解决变量名冲突的问题,使用了命名空间的概念。
C++入门(1)_第1张图片

1.2. 解决问题——关键字:namespace

C++中有四个域:类域、命名空间域、全局域、局部域。
编译搜索变量的顺序:局部域->全局域 -> 展开了命名空间域 or 指定访问命名空间域。
C++入门(1)_第2张图片
C++入门(1)_第3张图片
要想在局部变量存在的时候访问全局变量的值的话,使用 **:*符号
C++入门(1)_第4张图片
定义一个命名空间:
C++入门(1)_第5张图片
没有对命名空间域没有被展开,也没用指定命名空间域,编译的时候是不会在命名空间域中查找变量的。
C++入门(1)_第6张图片
对命名空间域的展开:
C++入门(1)_第7张图片
C++入门(1)_第8张图片
C++入门(1)_第9张图片
可见对命名空间域的展开,相当于命名空间里面的变量就变成了全局变量。可想而知,对命名空间域的展开对于一个大型的项目来说是很不友好的,因为在大型项目中,一开始写代码的时候,不会出现变量冲突,但是当对某一个命名空间域展开的时候,一旦出先变量名字冲突,修改起来就很麻烦。
所以,有时候我们可以指定命名空间域。
C++入门(1)_第10张图片
对于 :: 来说,前面没有为空白字符表示的全局域的变量;前面加命名空间的名字的时候,访问的就是该名字的命名空间里面的变量。
C++入门(1)_第11张图片
这样子就可以很好解决了rand变量和库里函数rand()的命名冲突了。

1.3. 命名空间的嵌套

C++入门(1)_第12张图片
一个命名空间里面的定义量大的时候,可能会出现命名空间的嵌套。
C++入门(1)_第13张图片
C++入门(1)_第14张图片

2.C++的输入和输出

std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
C++入门(1)_第15张图片
C++入门(1)_第16张图片
当我们需要大量输出的时候的时候,需要每次添加std::,会显得很麻烦。所以,我们可以对特定的命名空间里面的常用变量进行展开使用

C++入门(1)_第17张图片
效果一样的

2.1. 输出cout

**解释:**显示屏幕上
它可以自动识别显示的类型。
<<流插入运算符
C++入门(1)_第18张图片

2.2. endl

相当于换行符。
C++入门(1)_第19张图片

C++入门(1)_第20张图片

2.3. 输入cin

>>流提取运算符符

C++入门(1)_第21张图片
说明:

  1. cin可以对变量进行输入,自动识别输入的数据类型,不需要取地址符号;
  2. C++中仍然可以使用C语言的函数。
    C++入门(1)_第22张图片
    C++入门(1)_第23张图片

你可能感兴趣的:(C++,c++)