在C++中要涉及到非常多的类,此时一些变量、函数和类的名称都存在于全局或者巨大的局部变量中,或多或少的就会导致冲突,所以C++不同于C中引入了namespace关键字来解决这个问题,讲命名本地化、私有化、独立化以防止命名冲突与名字污染。
一、命名空间
命名空间定义
定义命名空间,使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。
例:
namespace zyl
{
// 命名空间中可以定义变量/函数/类型
int rand = 10;
int Add(int left, int right)
{
return left + right;
}
struct Node
{
struct Node* next;
int val;
};
}
命名空间可以嵌套使用。
命名空间就决定了空间内函数、变量等的作用区域,他们都局限于该空间内。
命名空间的使用
//加命名空间名称
int main()
{
printf("%d\n", N::a);
return 0;
}
//使用using引入类域
using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}
//使用using namespace 命名空间名称引入
using namespce N;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
Add(10, 20);
return 0;
}
二、C++输入&输出
流操作
int main()
{
size_t ret;
//C输入输出方式
scanf("%d", ret);
printf("hh");
//C++输入输出方式
cin >> ret;
cout << "Hello" << endl;
}
说明:
1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件 以及按命名空间使用方法使用std。
2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
3. >是流提取运算符。
4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。
5.C++会自动识别输入输出的数据类型,不用像C一样在进行类型的指定,C++关于浮点数据的精度表示后续介绍。