命名空间:
定义:namespace 变量名
{ 各种变量........
}
与结构体不同的是大括号后面没有分号。
与结构体相同的是命名空间可以嵌套。
在不同的文件中可能会有命名冲突,这就彰显了命名空间的优势。
命名空间使用方式:
命名空间名 + :: + 命名空间中的变量名
例:bit::x=8;
编译器查找变量时,会按一下顺序取查找:
1.当前局部域(例main函数中的)
2.全局域找
3.到展开的命名空间中去找
命名空间也是一个域,可以和其他不同的域定义同名的变量。
什么是展开的命名空间呢?
出学C++时,总能看到代码的第二行有 using namespace std;
这是为了方便,因为要频繁的使用cin和cout;
人们不想每一次用都输入std::cin或std::cout,使用就用到了命名空间的展开。
当然也有命名空间中变量的单独展开:
例:using std::cin;
using bit::x;
这样就可以单独用cin和cout,不用将命名空间全部展开。
所以访问命名空间有三种方式:
1.指定访问
2.全展开
3.指定展开某一个或某几个
流:
流的好处:可以自动识别类型
缺点:控制精度比较麻烦且效率不如scanf和printf
例:cout << i << " " << j << '\n' << endl;
cin >> i >> j ;
全缺省/半缺省:
全缺省:
例:void f(int a = 10 ,int b = 20, int c = 30)
{
cout << a << b << c << endl;
}
传参数时如果没传的话,如:f(),会用a,b的默认值10,20。
半缺省:
例:
void f(int a ,int b = 20, int c = 30)
{
cout << a << b << c << endl;
}
半缺省和全缺省一样,但只能从右往左缺省。
且缺省必须按顺序传,不能跳着传
例:f(1, ,2)为错误
此外如果函数声明与本体发生冲突,应该以声明为准。