C++引用基本概念詳解
C++編程語(yǔ)言中有很多應(yīng)用方法和C語(yǔ)言有相同之處。那么作為C語(yǔ)言的升級(jí)版本,它又有哪些不同之處呢?首先讓我們從C++引用的基本概念來解讀這一問題,希望能夠幫助大家輕松掌握這一語(yǔ)言的特點(diǎn)。#t#
一、C++引用的概念
引用引入了對(duì)象的一個(gè)同義詞。定義引用的表示方法與定義指針相似,只是用&代替了*。
例如: Point pt1(10,10);
Point &pt2=pt1; 定義了pt2為pt1的引用。通過這樣的定義,pt1和pt2表示同一對(duì)象。
需要特別強(qiáng)調(diào)的是C++引用并不產(chǎn)生對(duì)象的副本,僅僅是對(duì)象的同義詞。因此,當(dāng)下面的語(yǔ)句執(zhí)行后:
pt1.offset(2,2);
pt1和pt2都具有(12,12)的值。
C++引用必須在定義時(shí)馬上被初始化,因?yàn)樗仨毷悄硞€(gè)東西的同義詞。你不能先定義一個(gè)引用后才初始化它。例如下面語(yǔ)句是非法的:
- Point &pt3;
- pt3=pt1;
那么既然引用只是某個(gè)東西的同義詞,它有什么用途呢?
下面討論C++引用的兩個(gè)主要用途:作為函數(shù)參數(shù)以及從函數(shù)中返回左值。
二、引用參數(shù)
傳遞可變參數(shù)
傳統(tǒng)的c中,函數(shù)在調(diào)用時(shí)參數(shù)是通過值來傳遞的,這就是說函數(shù)的參數(shù)不具備返回值的能力。
所以在傳統(tǒng)的c中,如果需要函數(shù)的參數(shù)具有返回值的能力,往往是通過指針來實(shí)現(xiàn)的。比如,實(shí)現(xiàn)
兩整數(shù)變量值交換的c程序如下:
- void swapint(int *a,int *b)
- {
- int temp;
- temp=*a;
- *a=*b;
- *b=temp;
- }
使用C++引用機(jī)制后,以上程序的C++版本為:
- void swapint(int &a,int &b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- }
調(diào)用該函數(shù)的C++方法為:swapint(x,y); C++自動(dòng)把x,y的地址作為參數(shù)傳遞給swapint函數(shù)。