1、第七章 引用,C+语言程序设计教程,本章主要内容,引用的概念 各种数据类型的引用 引用做函数参数 引用函数返回值 常引用 引用的应用举例,引用是对其他变量的引用,为其他变量起一个别名. 可简化很多语法,并使原来一些难以实现的问题得到解决.,7.1 应用的概念,C+的引用是一种赋值、发送和返回复杂数据结构的方法,应用这种方法,系统不需要负担额外的开销,节省了内存空间。 引用建立时与某个变量绑定(必须先有变量存在)。 建立引用的格式:类型 声明rd是对double型数的引用,初始化为引用d.,引用特点: ()可以引用任何合法变量名 ()引用不是变量,必须初始化 ()引用是值,不占存储空间,声明引用
2、时,目标的存储状态不会改变所以,引用只有声明,没有定义 ()引用仅在声明时带有“”,以后就像普通变量一样使用,不需再带“” ()引用最好用做函数参数,例:分析以下程序,#include void main() int n=100;int ,7.2 各种数据类型的引用,指针也是变量,可有指针变量的引用 例:,一 指针引用,#include Void main() int *pn;int * /输出n值,cout“ ,并不是对任何类型的数据都可以引用,不能使用引用的情况: ()不允许对void进行引用因void本质上不是类型例:void ,一 引用类型的限制,7.3 引用作函数参数,传递引用给函数
3、与传递指针的效果一样. 引用形参是对应实参的别名,声明按引用传递函数参数,只需在函数声明或定义中参数类型的后面加上符号”&”即可,其他语法与按值调用的一样. 引用具有指针的威力,在调用引用传递的函数时,可读性比指针传递好. 引用具有传值方式函数调用语法的简单性与可读性,避免了复制大量数据的开销. 使用引用可返回多个值.,引用作为函数参数: (1)使用普通变量的引用来传递参数;(2)另一种是使用对象引用作为函数参数.,一 引用传递参数,例: #include Void f(int a,int n,int ,二 对象引用作函数参数,使用对象引用作为函数参数具有用对象指针作为函数参数的优点,而用对象
4、引用作函数参数更简单,更直接.,例:分析以下程序 include Class sample int x,y; Public:sample() x=y=0;sample(int x1,int y1)x=x1,y=y1;void copy(sample ,void fun(sample s1,sample ,7.4 引用函数返回值,引用表达式是一个左值表达式,因此它可以出现在形参数和实参数的任何一方. 如果一个函数返回了引用,则该函数的调用也可以被赋值. 引用返回值时,不生成值的副本.,#include int n=0; int ,注:引用返回值只用在需要对函数的返回值重新赋值的时候. 在类中也可
5、以引用成员函数的返回值.,#include Class sample int n;public:sample() sample(int m) n=m;int ,void main() sample s(10);(s-)+;s.disp(); 输出结果:n=10,7.5 常引用,使用const修饰符可以声明引用,被声明的引用为常引用,不能通过常引用更新对象的值. 定义格式:const 类型 /n是m的引用,可更新m值,但不能通过n更新m的值. 常引用用作函数的形参,这样该函数中不能更新该参数所引用的对象,可保护实参不被修改.,例1: #include Int add(const int 输出结果: 10+20=30,例2: #include int n;public:sample(int i) n=I;int getn() const /常成员函数return n; ; Int add(const sample ,void main() sample s1(100),s2(200);cout“s1.n=”s1.getn()endl;cout“s2.n=”s2.getn()endl;cout“sum=”add(s1,s2)endl; 注:只有常成员函数才能操作常对象.,