1、命名空间
2、C++流输入与流输出
3、缺省参数
4、函数重载
5、引用
1、命名空间
C++中有很多函数变量以及类名都作用于全局,如果不加以限制很容易会产生冲突,命名空间的目的便是为了解决这个问题,将函数变量等的名称进行本地化,以解决出现命名重复导致的冲突。
命名空间的关键字是namespace,用法如下:
namespace N1 //定义名为N1的命名空间
{
int a;
int Add(int a,int b)
{
return a+b;
} //定义在命名空间里的可以是变量,也可以使函数等
}
如果要使用命名空间,一般是用以下代码将命名空间进行展开
using namespace N1;
//C++给出的最常用的一些函数的命名空间是std
using namespace std;
当然也可以不展开命名空间单独使用其中的函数或变量,也可以展开某些常用的函数:
//拿上面定义的N1举个例子
N1::Add(1,2); //使用命名空间名+作用域符号::+要使用的变量或函数便可以实现指定命名
空间访问
using N1::Add(int a,int b); //这是单独展开命名空间中内容的用法
注:一般日常练习中命名空间直接展开即可,如果是做项目那么后面两种用法会更为合适
2、C++流输入与流输出
C++在对于输入与输出方面给出了比C语言实现更方便的方式,在使用时必须包含
include
using namespace std;
int main()
{
int a;
cin >> a; //用cin + 流输入运算符>> + 变量的方式进行输入
cout << a << endl; //用cou + 流输出运算符<< + 变量的方式进行输出
//endl是C++中的换行符的表示
return 0;
}
3、缺省参数
缺省参数是声明或定义函数时为函数的参数指定的一个默认值,如果在传参是没有给参数则默认使用默认值,如果给定参数则使用给定的参数。
void Add(int a = 0, int b = 0)
{
return a + b;
}
int main()
{
Add(); //使用默认参数,结果为0
Add(1,2); //使用指定的参数,结果为3
return 0;
}
缺省参数又分为全缺省参数和半缺省参数:
void Add(int a = 0, int b = 1, int c = 2) //此为全缺省参数,形参全部都有默认值
{
return a + b + c;
}
void Add(int a, int b = 1, int c = 2) //此为半缺省参数,有一部分形参没有默认值
{
return a + b + c;
}
//注:缺省参数赋值时必须从右往左依次给,不能跳过一个值给
例:Add(1,,3)//错误
Add(1,2,)//正确
如果做项目文件分离,那么缺省参数应该在声明中给出,在定义时则不必再给:
test.h
void Add(int a = 0, int b = 0);
test.c
void Add(int a,int b)
{
return a + b;
}
4、函数重载
函数重载是C++允许在同一作用域中出现同名函数重载的情况,它要求同名函数的形参列表(个数或类型或顺序)必须不同:
int Add(int a, int b)
{
return a + b;
}
double Add(double a, double b)
{
return a + b;
}
long Add(long a, long b)
{
return a + b;
}
int main()
{
Add(1,2);
Add(1.0,2.0);
Add(1L,2L);
return 0;
}
注:函数返回类型并不是函数重载的判断条件
5、引用
引用的用法和指针比较相似,但却还是有许多区别,引用相当于是给函数起的“别名”。
int b = 0;
int& a = b; //这里便是声明了一个a是b的引用
//引用定义时必须初始化,这是和指针不同的其中一个地方
int* a;
int b = 0;
int c = 0;
a = &b;
a = &c; //指针可以改变地址,而引用不可以改变
引用通常的用法:
void Swap(int& a, int& b)
{
int t;
t = a;
a = b;
b = t; //这里直接交换了传进来的实参的值
//因为引用相当于直接引用了实参的那段地址,这一点和指针类似
//引用可以对实参进行改变
}



