命名空间namespace
1.定义命名空间,其实就是定义了一个域,定义这个域呢需要用到namespace关键字,后面跟着命名空间的名字,然后接一对{},里面是命名空间的成员,可以是变量,函数,结构体等等。
2.namespace定义出的域和全局域各自独立,不同的域可以定义同名的变量,这样就解决了命名冲突。
3.C++中的域包括全局域,函数局部域,命名空间域,类域,域影响的是编译时语法查找一个变量/类型/函数的逻辑,域会对他们做出隔离。全局域和函数局部域还会影响他们的生命周期,命名空间域和类域不会影响他们的生命周期。
4.namespace只能定义在全局中,不能定义在别的域中
5.命名空间可以嵌套使用
6.项目工程中多文件定义的同名命名空间会被系统认为是同一个,不会冲突
7.C++标准库都放在命名空间std(standard)中
8.域作用限定符"::",使用方法(假设有一个域叫Apple,里面有一个变量叫a),假设我们就想找这个a,写法为
Apple::a
这样我们就可以直接访问a了。
命名空间的使用
1.编译查找一个变量的声明/定义时,只会默认在局部域或全局域查找,不会直接到命名空间中查找,除了使用域作用限定符进行空间访问,还有别的方法
2.使用using关键字把某个命名空间展开,这样下面再访问时就不需要再一个个通过::来访问了
比如using namespace std,我们平常做项目时习惯写在前面,其实就是提前展开了std这个域
3.使用using把命名空间中的某个成员展开,项目中经产访问且不容易冲突的量可以选择这个方式。
C++的输入和输出
1.首先我们需要包括头文件iostream(input output stream),这是标准的输入输出流库
2.std::cin用于输入,std::cout用于输出到council(工作台)
3.std::endl是一个函数,流输入输出时,相当于插入一个换行字符+刷新缓冲区,效果和C中的“\n”是一样的
4.<<是流插入运算符,>>是流提取运算符
5.使用C++输入输出比C更加方便,因为不再需要自己设定变量类型,C++的输入输出会自动识别类型。cin会把所有类型变为字符类型。其实最重要的是C++的流能更好的支持自定义类型对象的输入输出。
注意,我们日常练习可以直接展开std
using namespace std;
但在实际项目中不推荐
另外,C++兼容C语言,C语言的写法在C++中也可以使用