Bootstrap

c++入门之 命名空间与输入输出

1、命名空间

1.1使用命名空间的原因

先看一个例子:

#include <iostream>

int round = 0;

int main()
{
	printf("%d", round);

	return 0;
}

请问,这个程序能跑起来吗? 答案是否定的

原因是,当我们想创建一个全局变量 round 时, 该名与库函数中的 round 函数重名,这时就发生了命名冲突,导致程序无法编译运行

当然,当团队协同合作时, 不同程序员之间的变量名也可能会发生命名冲突,

由于自己也无法完全记住所有库函数的名字,命名冲突就是一个比较烦人的问题了

1.1.1总结:

命名空间可以用来避免命名冲突

2.命名空间的定义

2.1关键字 namespace

命名空间形如:关键字 加 空间名称 + { 主体 }

​
命名空间可以定义函数/变量/类型
namespace dfq
{
   int round = 0;
}

​
命名空间可以嵌套
namespace dfq
{
  struct birth
  {
   ...
   }
  
  namespace lover
  {
  struct birth
  {
   ...
   }
  }
}   

一个命名空间就定义了一个作用域

 在一个项目中,可以存在多个相同名称的命名空间,编译运行后,分散的变量/类型/函数,

共同局限在一个作用域里面

 3.命名空间的使用

3.1加命名空间名称、作用域限定符

::作用域限定符,用来寻找指定作用域的变量等

3.2.1使用using namespace 命名空间名称 引入

3.2.2 局限性

该种方法使  a 成为了全局变量, 可以被使用

但是,成为全局变量之后可能会发生命名冲突,导致无法编译通过

#include <iostream>

namespace dfq
{
	int round = 0;
}

using namespace dfq;
int main()
{
	printf("%d", round);

	return 0;
}

 

所以:平时练习可以使用这种方法, 大工程项目中一定要避免使用 

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

2.输入与输出

目前学的较为简单,只需先记住用法

输入关键字 cin

输出关键字 cout

 (1)std 指的是c++ 标准库的命名空间名称,,C++将标准库的定义实现都放到这个命名空间中

(2)使用cin 、 cout 需要 包含 <iostream> 头文件  并且按命名空间的使用方法使用 std

(3)cin 标准输出对象(控制台)cout 标准输入对象(键盘)  

      它们是全局的流对象,包含在头文件<iostream>中

(4)>> 叫作 流提取运算符<< 叫作 流插入运算符

 (5)endl 是特殊的 c++ 换行符,

(6)c++的输入输出不需要手动控制格式,使用较为方便

(7)cin、cout还有更多复杂的用法,比如保留精度, 但是,因为 c++ 兼容大部分c 所以我们完全可以使用 scanf printf 来解决这个问题。 实在不行,我们再去学习就是

                                            点赞加关注,让我们下期见!

;