第4章常量與引用_第1頁
第4章常量與引用_第2頁
第4章常量與引用_第3頁
第4章常量與引用_第4頁
第4章常量與引用_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第四章常量與引用

學(xué)習(xí)目標了解define與const的區(qū)別掌握const的不同應(yīng)用掌握引用方法掌握引用拷貝構(gòu)造函數(shù)的使用方法constfor(inti=0;i<=100;i++){……}#defineMAX100#definefun(a)a*5……ints=fun(3+5);fun(a)=3+5*5const使用方法格式:注意:盡量把const定義放進頭文件里,由此通過包含頭文件,把const定義放在一個需要放置的地方。當(dāng)定義一個常量(const)時,必須初始化,即賦初值給它。const

類型名

對象名;例如:constintMAX=100;intiDataList[MAX];const使用方法程序設(shè)計中,如果不想改變某個數(shù)值,就應(yīng)該聲明它為“常量”。常量的使用一是消除不安全因素,二是消除存儲和讀操作,使代碼的執(zhí)行效率更高。[例4-1]常數(shù)組與常對象。constintDATALIST[]={5,8,11,14}; //合法使用,定義一個常量數(shù)組structMyStruct{inti;intj;};constMyStructsList[]={{1,2},{3,4}}; //正確,定義一個結(jié)構(gòu)體常量數(shù)組charcList[DATALIST[1]]; //錯誤floatfList[sList[0].i]; //錯誤const與指針const與指針的結(jié)合使用,有兩種情況:用const修飾指針,即修飾存儲在指針里的地址;修飾指針指向的對象。為防止混淆使用,采用“最靠近”原則。指向常量的指針定義格式例如:constint*p;intconst*p;const

類型名*

指針變量名;const與指針常指針定義格式例如:inti=4;int*constq=&i;i=5;*q=6;可以使用一個常指針指向一個變量,也可以把非const對象變?yōu)閏onst對象。例如:

inti=4;int*constp=&i; //可以用const指針指向一個非const對象constint*constq=&i; //可以把非const對象地址賦值給const對象指針類型名*

const

指針名;const與指針可以用指向字符的指針來指向字符串,例如:char*p=“hello!”;

constchar*q="hello!"; //正確,非const指針,const數(shù)據(jù)constchar*constp=“hello!”; //正確,const指針,const數(shù)據(jù)可以把非const數(shù)據(jù)對象地址賦給const指針,但是不能把const對象的地址賦給指向非const對象的指針inti=5;constintj=3;int*p=&i;//int*q=&j; //錯誤,把const對象的地址賦給指向非const對象的指針int*s=(int*)&j; //強制轉(zhuǎn)換,合法,但是不建議這樣使用const與函數(shù)函數(shù)與const結(jié)合應(yīng)用有兩種方式:參數(shù)為const類型;返回值為const類型。const類型參數(shù)定義格式例如voidf(constinti){i++; //錯誤}voidf(constint*p){(*p)++; //錯誤}返回值類型函數(shù)名稱(const類型參數(shù)名,……)const應(yīng)用const類型返回值可以用const修飾符修飾函數(shù)的返回值,即函數(shù)返回一個常量值,此常量值既可以賦給常量(對常量初始化),也可以賦給變量。[例4-2]返回值為常量的函數(shù)[例4-3]常對象的使用const在傳遞地址中的應(yīng)用在函數(shù)的實參與形參結(jié)合時的傳遞地址過程中,對于在被調(diào)用的函數(shù)中不需要修改的指針或?qū)ο螅胏onst修飾是合適的。[例4-4]常指針使用舉例const與類在類里建立一個const成員時不能賦初值,只能在構(gòu)造函數(shù)里對其賦初值,而且要放在構(gòu)造函數(shù)特殊的地方。classconClass{constintNUM;public:conClass();};conClass::conClass():NUM(100){}錯誤示例:classconClass{constintNUM=100; //錯誤

intiData[NUM]; //錯誤

public:conClass();};const與類靜態(tài)常量classStudent{staticconstintNUM=30;intiScoreList[NUM];……};constintStudent::NUM;classStudent{staticconstintNUM;……};constintStudent::NUM=30;const與類enum(枚舉)

classStudent{enum{NUM=30};intiData[NUM];public:

conClass();};enum{MAX=100,SUM=200,NEXT};const與類常對象與常成員函數(shù)constinti=10;constconClasscTest(10);const成員函數(shù)定義格式[例4-5]const成員函數(shù)與非const成員函數(shù)使用方式比較class類名{……

返回值類型成員函數(shù)名稱(參數(shù)列表)const;……};引用(&)引用是C++的一大特點,是支持C++運算符重載的語法基礎(chǔ),也為函數(shù)參數(shù)的傳入與傳出提供了便利。如果不想改變參數(shù),則可通過常量引用傳遞。引用被認為是某個變量或?qū)ο蟮膭e名,引用定義格式:例如:intx;int&y=x;引用類型使用方法舉例類型名

&

引用名

=被引用的對象名稱;引用(&)引用(&)像一個自動能被編譯器逆向引用的常量型指針。使用規(guī)則如下:當(dāng)引用被創(chuàng)建時,它必須被初始化(指針則可以在任何時候被初始化)。

一旦一個引用被初始化為指向一個對象,它就不能被改變?yōu)閷α硪粋€對象的引用(指針則可以在任何時候指向另一個對象)。沒有NULL引用。必須確保引用是和一個合法的存儲單元關(guān)聯(lián)。當(dāng)定義一個引用時,必須被初始化指向一個存在的對象,也可以這樣寫intn;int&m=n;int&j; //錯誤,沒有初始化引用(&)為引用再提供一個引用,也是合法的,例如:intx=5;int&y=x;int&z=y;使用引用時注意:不能建立引用數(shù)組,例如:intiData[5];int&icData[5]=iData; //錯誤不能建立引用的引用,例如:inti;int&&j=i; //錯誤引用與指針引用與指針有著本質(zhì)的區(qū)別,指針通過變量的地址來間接訪問變量,而引用通過變量的別名來直接訪問變量。[例4-9]指針和引用使用方法的對比[例4-10]數(shù)組、指針和引用的使用方法對比引用與函數(shù)采用引用的主要用途之一就是做函數(shù)的參數(shù)使用。首先看一則經(jīng)典的使用函數(shù)交換兩個變量值的例子。[例4-11]使用指針和引用交換對比。[例4-12]不能返回一個不存在的或已銷毀的變量的引用。

int&tcite2(){intm=2;//returnm;//錯誤,調(diào)用完函數(shù)tcite2()后,臨時對象m將被釋放,返回值為一個空引用

staticintx=5;returnx; //正確,x為一靜態(tài)對象,不會隨著函數(shù)tcite2()的結(jié)束而結(jié)束}引用與函數(shù)[例4-13]正確使用指針和引用做返回值的例子。[例4-14]對常量引用的例子。voidt1(int&){}voidt2(constint&){}intmain(){ //t1(1);//錯誤,在函數(shù)t1()中,可以修改參數(shù)內(nèi)容,而1為常量

t2(1); //正確,在函數(shù)t2()中,參數(shù)聲明為常量}拷貝構(gòu)造函數(shù)不僅可以由構(gòu)造函數(shù)創(chuàng)建對象,也可以通過已有對象創(chuàng)建新對象。[例4-15]統(tǒng)計類聲明對象個數(shù)。拷貝構(gòu)造函數(shù)定義格式[例4-16]例4-15修改的例子。[例4-17]跟蹤程序運行時,當(dāng)前Point類對象的個數(shù)。構(gòu)造函數(shù)名(const

類名&

);classA{…Public:A(); //構(gòu)造函數(shù)

A(constA&); //拷貝構(gòu)造

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論