引用类型
定义引用的格式如下:
数据类型 &引用名称 = 目标对象;
引用可以认为是目标对象的别名,操作引用和操作实际的目标对象是相同的。
引用类型当做局部变量
void main()
{
int ivar = 10; //定义一个整形变量
int &rvar = ivar; //定义一个引用对象
rvar = 5; //设置引用对象数据
printf("ivar = %d\n",ivar); //step1
printf("rvar = %d\n",rvar); //step2
printf("ivar的地址 = %d\n",&ivar); //step3
printf("rvar的地址 = %d\n",&rvar); //step44
}
运行结果:
ivar = 5
rvar = 5
ivar的地址 = -1547230460
rvar的地址 = -1547230460
rvar和ivar共享一片存储空间
引用类型当做函数参数
void ValuePass(int &var) //定义一个函数,使用引用类型作为参数
{
var = 10; //设置参数的值
printf("%d\n",var); //输出参数
}
int main()
{
int ivar = 5;
ValuePass(ivar);
printf("%d\n",ivar);
return 0;
}
复制构造函数相关
编译器除了能够提供默认的构造参数外,还可以提供默认的复制构造参数。
classname (const classname &obj) {
// 构造函数的主体
}
当函数或方法的参数采用按值传递时,编译器会将实际参数复制一份到被调用函数中;如果参数属于某一个类,编译器会调用该类的复制构造函数来复制实际参数到被调用函数。
按引用的方式传递参数,可以避免调用复制构造函数,极大地提高程序的执行效率。复制构造函数下次详细讲解