怎樣深度剖析C++中的C++類型

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎樣深度剖析C++中的C++類型,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于孟州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供孟州營銷型網(wǎng)站建設(shè),孟州網(wǎng)站制作、孟州網(wǎng)頁設(shè)計、孟州網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造孟州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供孟州網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

在C++中,C++類模板不能直接使用,必須先實例化為相應(yīng)的模板類,定義模板類的對象后,才可使用,可以用以下方式創(chuàng)建類模板的實例。
模板(template)利用一種完全通用的方法來設(shè)計函數(shù)或類而不必預(yù)先說明將被使用的每個對象的類型,利用模板功能可以構(gòu)造相關(guān)的函數(shù)或類的系列。因此模板也可稱為參數(shù)化的類型。在C++類型中,模板可分為類模板(class template)和函數(shù)模板(function template)。

在程序中說明了一個函數(shù)模板后,編譯系統(tǒng)發(fā)現(xiàn)有一個相應(yīng)的函數(shù)調(diào)用時,將根據(jù)實參中的類型來確認(rèn)是否匹配函數(shù)模板中對應(yīng)的形參。然后生成一個重載函數(shù)。該重載函數(shù)的定義體與函數(shù)模板的函數(shù)定義體相同,稱之為模板函數(shù)(template function)。

函數(shù)模板與模板函數(shù)的區(qū)別是:函數(shù)模板是模板的定義,定義中用到通用類型參數(shù)。模版函數(shù)是實實在在的函數(shù)定義,它由編譯系統(tǒng)在遇到具體函數(shù)調(diào)用時所產(chǎn)生,具有程序代碼。

同樣,在說明了一個類模板之后,可以創(chuàng)建類模板的實例,即生成模板類。類模板與摸板類的區(qū)別是:類模板是模板的定義。不是一個實實在在的類,定義中用到通用類型參數(shù);模板類是實實在在的類定義,是類模板的實例。

1.函數(shù)模板

通過前面知識的學(xué)習(xí)可知,在所定義的函數(shù)中,函數(shù)形參的類型是固定的,當(dāng)調(diào)用函數(shù)時,實參的類型要與被調(diào)函數(shù)的形參類型保持一致,否則會出現(xiàn)類型不一致的錯誤。因此,對于功能相同而只是參數(shù)的類型不同的情況,也必須定義不同的函數(shù)來分別完成相應(yīng)的功能,這顯然是很不靈活的。

C++語言中提供的函數(shù)模板功能就是為解決以上問題而提出的。C++類型提供的函數(shù)模板可以定義一個對任何類型變量都可進行操作的函數(shù),從而大大增強了函數(shù)設(shè)計的通用性。

因為普通函數(shù)只能傳遞變量參數(shù),而函數(shù)模板卻提供了傳遞類型的機制在上面的定義形式中,<參數(shù)形參表>可以有一到若干個形參,各形參前必須加上class關(guān)鍵字,表示傳遞類型,當(dāng)有多個形參時,各形參間用逗號分隔。

從中可以看出,<類型形參表>中的每個形參就表示了一種數(shù)據(jù)類型?!靶螀⒈怼敝兄辽儆幸粋€形參的類型必須用<類型形參表>中的形參來定義。函數(shù)模板只是說明,不能直接執(zhí)行,需要實例化為模板函數(shù)后才能執(zhí)行。當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個函數(shù)調(diào)用:函數(shù)名(實參表);

將根據(jù)“實參表”中的實參的類型和已定義的函數(shù)模板生成一個重載函數(shù)即模板函數(shù)。該模板函數(shù)的定義體與函數(shù)模板的定義體相同,而“形參表”中的類型則以“實參表”中的實際類型為依據(jù)。

2.類模板
<C++類型形參表>中可以包括一到若干個形參,這些形參既可以是“類型形參”,也可以是“表達式形參”。每個類型形參前必須加class關(guān)鍵字,表示對類模板進行實例化時代表某種數(shù)據(jù)類型。

也就是說,C++類型形參是在類模板實例化時傳遞數(shù)據(jù)類型用的;表達式形參的類型是某種具體的數(shù)據(jù)類型,當(dāng)對類模板進行實例化時,給這些參數(shù)提供的是具體的數(shù)據(jù),也就是說,表達式形參是用來傳遞具體數(shù)據(jù)的。當(dāng)<類型形參表>中的參數(shù)有多個時,需用逗號隔開。如:

template <class arg1,int arg2,class arg3>      class myclass       {       //類的定義體       };

上述就是小編為大家分享的怎樣深度剖析C++中的C++類型了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:怎樣深度剖析C++中的C++類型
本文路徑:http://bm7419.com/article28/jcejjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、定制網(wǎng)站、網(wǎng)站內(nèi)鏈、軟件開發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)