零.导言
今天我将介绍C++入门时需要了解的知识,由于篇幅有限,我将分几篇介绍。同时作为备份以供自己复习。欢迎有需要的人持续关注。
一.命名空间初接触
什么是命名空间?相信你偶然看见过这么一段代码:
#include<iostream>
using namesapce std;
int main()
{
cout << "Hallo World" << endl;
return 0;
}
可能你会有这样的疑问:iostream 是什么?"using namespace std" 又是什么意思?cout 和 endl 是干嘛的?
不急,且听我娓娓道来:iostream 是 C++ 标准库中用于处理输入输出操作的核心头文件;cout 是 C++ 标准库中的输出流对象,属于std::ostream 类型,用于向标准输出设备(如屏幕)输出数据;endl 是输出流控制符,用于在输出流中插入换行符并 强制刷新缓冲区,等效于插入\n。
重点是 namespace ——声明命名空间的关键字。
而 "using namespace std" 是 C++ 中用于声明标准命名空间的指令,其作用是将 std 命名空间内的所有标识符(如 cout、endl、string 等)引入当前作用域,使我们无需通过 std:: 前缀即可直接使用这些标准库组件。
二.命名空间的使用
就像 "using namespace std" 一样,我们使用命名空间可以有效的避免函数的冲突:
举个例子:在工作中,我构建了一个函数Add,你也构建了一个函数Add,同时,这两个函数不构成重载(即参数类型一样),那么程序就会报错。合理地使用命名空间,可以将函数的声明限定在命名空间内,不会在不适用该命名空间时进入符号表内,从而防止报错。
命名空间的使用方式如下:
namespace engineer1
{
int Add(int x, int y)
{
return x + y;
}
}
此时,我们想要使用此 Add 函数,要如下:
using namespace engineer1;
int main()
{
int ret = Add(1, 2);
}
或者:
int main()
{
int ret = engineer1::Add(1, 2);
}
这两种方式各有优劣:前者好处是使用方便,但是失去了使用命名空间的本意;后者虽然不方便,每次使用函数都要 :: 但是胜在能避免函数重复定义。
完