溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)結(jié)構(gòu)--泛型編程

發(fā)布時間:2020-08-23 04:26:59 來源:網(wǎng)絡(luò) 閱讀:258 作者:淡淡_小孩 欄目:開發(fā)技術(shù)

一 泛型編程的概念

泛型的定義主要有以下兩種:
1.在程序編碼中一些包含類型參數(shù)的類型,也就是說泛型的參數(shù)只可以代表類,不能代表個別對象。(這是當(dāng)今較常見的定義)
2.在程序編碼中一些包含參數(shù)的類。其參數(shù)可以代表類或?qū)ο蟮鹊?。(人們大多把這稱作模板)不論使用哪個定義,泛型的參數(shù)在真正使用泛型時都必須作出指明。
一些強(qiáng)類型編程語言支持泛型,其主要目的是加強(qiáng)類型安全及減少類轉(zhuǎn)換的次數(shù),但一些支持泛型的編程語言只能達(dá)到部分目的。
泛型編程是一種不考慮具體數(shù)據(jù)類型的編程方式,可以由下面的Swap函數(shù)來進(jìn)行了解

   void Swap(T& a,T& b)
     {
         T t=a;
         a=b;
         b=t;
     }

在這個例子中,Swap泛型的寫法中的T不是一個具體的數(shù)據(jù)類型,而是泛指任意的數(shù)據(jù)類型

二 C++中的函數(shù)模板

一種特殊的函數(shù)可用不同的類型進(jìn)行調(diào)用,看起來和普通的函數(shù)很相似,區(qū)別是類型可被參數(shù)化

  template<typename T>
   void Swap(T& a,T& b)
     {
         T t=a;
         a=b;
         b=t;
     }

函數(shù)模板的語法規(guī)則:
template關(guān)鍵字用于聲明開始進(jìn)行泛型編程
typename關(guān)鍵字用于聲明泛指類型
函數(shù)模板使用有自動類型推導(dǎo)使用和具體類型調(diào)用兩種

int a=0;
int b=1;
Swap(a,b);//自動推導(dǎo)

float c=2;
float d=3;
Swap<float>(c,d);//顯示調(diào)用

三 C++中的類模板

C++中的類模板以相同的方式處理不同的類型,在類聲明前使用template進(jìn)行標(biāo)識
<typename T>用于說明類中使用的泛指類型T

template <typename T>
class Book
{
    public:
        T Bo(T a,T b);
};

類模板的應(yīng)用
1.只能顯示指定具體類型,無法自動推導(dǎo)
2.使用具體類型<type>定義對象

Book<int>book1;
Book<string>book2;
Book<char>book3;
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI