我的c++学习(7)引用和复制构造函数
一、引用
什么是引用? 引用又称别名(alias),是一种非常特殊的数据类型。它不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是
C++系统不为引用类型变量分配内存空间。引用主要用于函数之间的数据传递。
引用定义的格式为: 类型 &引用变量名=已定义过的变量名;
例如: double number ;
double &newnum=number ;
newnum是新定义的引用类型变量,它是变量number的别名,两个变量代表同一块内存。
【例】使用一个函数交换两个数据。
#include<iostream.h> void swap(double & d1,double & d2) //d1和d2是引用型变量 { double temp ; temp=d1 ; d1=d2 ; d2=temp ; } void main(void) { double x , y ; cout<<"请输入x和y的值"<<'\n'; cin>>x>>y ; swap(x,y) ; cout<<"x="<<x<<'\t'<<"y="<<y<<'\n'; }
引用可以作为函数的返回值
一般函数返回值时,要生成一个临时变量作为返回值的拷贝,而用引用作为返回值时,不生成值的拷贝。
【例】采用不同返回方式的求正方形面积函数的比较。
#include<iostream> using namespace std; double temp; double fsqr1(double a){ temp=a*a ; return temp; } double & fsqr2(double a){ temp=a*a ; return temp; } int main(){ double x=fsqr1(5.5);//第一种情况 double y=fsqr2(5.5);//第二种情况 cout<<"x="<<x<<'\t'<<"y="<<y<<endl; return 0; }
几点注意:
1.对数组只能引用数组元素,不能引用数组(数组名本身为地址)。
2.不能定义引用的引用(引用也是地址),所以当函数的参数为引用时,引用不能作实参。
二、复制构造函数
……