靜態(tài)成員與類模板.ppt

靜態(tài)成員與類模板.ppt

ID:49207267

大?。?5.50 KB

頁數(shù):13頁

時(shí)間:2020-02-01

靜態(tài)成員與類模板.ppt_第1頁
靜態(tài)成員與類模板.ppt_第2頁
靜態(tài)成員與類模板.ppt_第3頁
靜態(tài)成員與類模板.ppt_第4頁
靜態(tài)成員與類模板.ppt_第5頁
資源描述:

《靜態(tài)成員與類模板.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、類的靜態(tài)成員問題的引入在某些情況下,某些特殊類類型的所有對(duì)象可能需要訪問同一個(gè)變量。例如:要計(jì)數(shù)在程序的任意一點(diǎn)總共創(chuàng)建了多少個(gè)此類類型的對(duì)象。能否采用定義全局變量的方式來實(shí)現(xiàn)?這樣做會(huì)有什么問題?靜態(tài)成員的使用可定義靜態(tài)成員變量,實(shí)現(xiàn)同一類的所有對(duì)象共享一個(gè)變量。在類體中的數(shù)據(jù)成員聲明前面加上關(guān)鍵字static,就使該數(shù)據(jù)成員成為靜態(tài)的成員。staticintStudent_Num;靜態(tài)數(shù)據(jù)成員被當(dāng)作該類類型的全局變量。對(duì)于非靜態(tài)數(shù)據(jù)成員每個(gè)類對(duì)象都有自己的拷貝,而靜態(tài)數(shù)據(jù)成員只有一份由該類類型的所有對(duì)象共享訪問的空間。靜態(tài)成員的使

2、用由于類的靜態(tài)成員變量并不占類對(duì)象本身的存儲(chǔ)空間,而是獨(dú)立存在的。因此在對(duì)象定義的時(shí)候,也不會(huì)為靜態(tài)成員變量分配內(nèi)存空間。故靜態(tài)成員要單獨(dú)在類外初始化。intCStu::Student_Num;初始化可以給靜態(tài)成員賦值,如果不賦值默認(rèn)為0;靜態(tài)成員的優(yōu)點(diǎn)可以實(shí)現(xiàn)信息隱藏,靜態(tài)成員可以是private成員,而全局變量不能。靜態(tài)數(shù)據(jù)成員沒有進(jìn)入程序的全局名字空間,因此不存在與程序中其他全局名字沖突的可能性。靜態(tài)成員函數(shù)同樣,成員函數(shù)也可以被定義為靜態(tài)的。只要在聲明前加上關(guān)鍵字static。其主要的作用就是為了處理靜態(tài)成員變量的。靜態(tài)成員函

3、數(shù)屬于類,而不屬于某個(gè)對(duì)象,因此靜態(tài)成員函數(shù)沒有this指針。調(diào)用靜態(tài)函數(shù)時(shí),必須加上域運(yùn)算符“::”。CStu::ShowNum();由于靜態(tài)成員函數(shù)沒有this指針,所以他無法訪問類中的非靜態(tài)成員變量及函數(shù)類模板問題的引入對(duì)于類的聲明來說,存在這樣的問題——有時(shí)候有多個(gè)類,其功能是相同的,僅僅是數(shù)據(jù)成員的數(shù)據(jù)類型不同。如下面這個(gè)比較兩個(gè)數(shù)類:classCompare{private:inta,b;public:Compare(intx,inty);intMax();}classCompare{private:doublea,b;p

4、ublic:Compare(doublex,doubley);doubleMax();}類模板的提出C++為了減少重復(fù)工作,添加了模板(template)功能,有效的解決了上述問題。將類的定義方法改為:templateclassCompare{private:numtypea,b;public:Compare(numtypex,numtypey);numtypeMax();}templatetemplate是關(guān)鍵字,表示模板后面的尖括號(hào)內(nèi)是參數(shù)列表,class表示后面是類型參數(shù)。類模

5、板的定義區(qū)別于普通類的定義,不能將成員函數(shù)的說明和實(shí)現(xiàn)分開在不同的文件里。否則會(huì)產(chǎn)生連接錯(cuò)誤。通常要統(tǒng)一寫在一個(gè).h文件中。編寫每個(gè)成員函數(shù)的具體實(shí)現(xiàn)時(shí),應(yīng)寫成類模板格式:template函數(shù)虛擬類型類名<虛擬類型參數(shù)>::函數(shù)名(參數(shù)表)類模板的使用普通類的使用——類對(duì)象的定義:comparea(10,20);類模板的使用時(shí),對(duì)象的定義是否能寫成這樣?系統(tǒng)是否能自動(dòng)判斷參數(shù)的類型?類模板的使用:comparea(10,20);類模板創(chuàng)建的步驟構(gòu)建類模板時(shí),先寫一個(gè)普通類,一般結(jié)構(gòu)簡(jiǎn)單,不易出錯(cuò)。將

6、類中需要變更的類型名(如int要替換為float等)改成自己寫的虛擬名字。在類聲明前加上一行,格式為:template在類模板外定義成員函數(shù)時(shí),應(yīng)寫成類模板格式:template函數(shù)虛擬類型類名<虛擬類型參數(shù)>::函數(shù)名(參數(shù)表)注意:類模板的參數(shù)可以有一個(gè),也可以有多個(gè),每個(gè)類型前必須加class:templateclasscompare{……};在對(duì)象定義時(shí)應(yīng)寫為:comparea;例子中的numtype,Num1

7、,Num2只是一個(gè)參數(shù)名,可以隨便起,只要是合法的標(biāo)識(shí)符就行。他并不是一個(gè)實(shí)際的類型名,而只是一個(gè)虛擬的名字。由于numtype,Num1,Num2只是一個(gè)參數(shù),因此在實(shí)際使用的時(shí)候,它將被實(shí)際的類型(int,float,char……)所取代。從而實(shí)現(xiàn)一類多用。

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。