一、命名空间
1.什么是命名空间
命名空间是用来解决C语言中存在的命名冲突问题的。(关键字:namespace)即将全局作用域分成一个个命名空间,不同命名空间内同名的变量、函数或结构体等不会出现命名冲突。
注意:
1.在命名空间中的的变量也属于全局变量,命名空间不改变变量的生命周期。
2.在没有指定(或展开)命名空间时,编译器查找时会先局部后全局(不会去命名空间中找),但是有指定命名空间时,会直接去命名空间中查找。
2.命名空间的使用
1)作用域限制符:
对命名空间内的成员进行访问和使用需要用到符号 : : , : : 称为作用域限制符,
int main()
{
printf("%d\n",num::a);
return 0;
}
如上,打印名为num空间中的a变量。
2)全部展开:
当需要频繁的使用某个命名空间的时候,可以使用 using namespace 将其全部展开,以便后续直接使用
例:using namespace std ;
3)指定展开:
使用using + 命名空间名称 + 作用域限定符 + 某个成员
例:using num :: a;
二、缺省参数
1.定义
缺省参数是指在函数声明或函数定义时为形参指定一个默认值,当调用函数时没有传入对应实参则将默认值做为实参传给形参。使函数参数更灵活。
注:
函数声明定义分离的时候不能同时定义缺省参数,建议写在声明处。
例:
void Func(int a = 0)
{
cout << a << endl;
}
2.全缺省
函数的所有参数都给上默认值
void Fun(int a = 10,int b = 20,int c = 30)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
}
3.半缺省
部分参数给默认值,但必须从右往左依次给,不能跳跃(也不能先给a b,不给c)
缺省参数传参时,默认按从左到右的顺序依次给,不能跳跃。
void Fun(int a , int b = 20, int c = 30)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
}
int main()
{
Fun(1); //a = 1, b = 20, c = 30
Fun(2,3);//a = 2, b = 3, c = 30
return 0;
}
三、函数重载
c++允许同名函数,但要求参数不同,构成函数重载。
参数不同:
1.类型不同;
2.数量不同;
3.顺序不同;
cpp如何支持重载呢?-> 函数名修饰,名字中引入参数类型,由各个编译器自己实现
例如Linux用-Z3Addii表示下面int 的Add函数,3表示函数名为三个字符,ii表示参数是两个int
//以下两个函数构成重载,参数类型不同
int Add(int a, int b)
{
return a + b;
}
double Add(double a, double b)
{
return a + b;
}
四、小结
以上是c++入门的命名空间、缺省参数以及函数重载的简单说明,学习记录,供大家参考。