欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++模版函數(shù)怎么用-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)C++模版函數(shù)怎么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

10多年的巴林左旗網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整巴林左旗建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“巴林左旗網(wǎng)站設(shè)計”,“巴林左旗網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

C++中的模版總體可以分為兩大類:模版函數(shù)、模版類。本篇文章先寫模版函數(shù),接下來會介紹模版類。

定義:模版函數(shù)是通用的函數(shù)描述,也就是說它們使用通用類型來定義,其中的通用類型可用具體類型替換。

代碼實例:

#include <iostream>//模版函數(shù)的聲明template<typename T>void Swap(T& a,T& b);int main()
{    int i = 10;    int j = 20;
    std::cout<<"i=" << i << "," << "j=" <<j;
    Swap(i,j);//生成 void Swap(int &,int&);
    std::cout<<"i=" << i << "," << "j=" <<j;    double x = 11.5;    double y = 19.5;
    std::cout<<"x=" << x << "," << "y=" <<y;
    Swap(x,y);//編譯器生成 void Swap(double &,double&);
    std::cout<<"x=" << x << "," << "y=" <<y;    return 0;
}//模版函數(shù)的定義template<typename T>void Swap(T& a,T& b)
{
    T temp;
    temp = a;
    a = b;
    b = temp;
}

以上實例為最簡單的函數(shù)模版實例,編譯器會根據(jù)具體使用的類型生成相對應(yīng)的函數(shù)。

重載的模版:

需要多個對不同的類型使用同一算法時可使用模版,如上代碼所示。但是并非所有的類型都使用相同的算法。為滿足這種需求,可以像重載常規(guī)函數(shù)定義那樣重載模版定義。和重載常規(guī)函數(shù)一樣,重載函數(shù)的特征表必須不同。代碼實例如下:

#include <iostream>//模版函數(shù)的聲明template<typename T>void Swap(T& a,T& b);const int iCount = 5;
template<typename T>void Swap(T* a,T*b,int n);int main()
{    int i = 10;    int j = 20;
    std::cout<<"i=" << i << "," << "j=" <<j;
    Swap(i,j);//生成 void Swap(int &,int&)
    std::cout<<"i=" << i << "," << "j=" <<j;    double x = 11.5;    double y = 19.5;
    std::cout<<"x=" << x << "," << "y=" <<y;
    Swap(x,y);//編譯器生成 void Swap(double &,double&);
    std::cout<<"x=" << x << "," << "y=" <<y;    int d[iCount] = {0,1,2,3,4};    int e[iCount] = {5,6,7,8,9};
    Swap(d,e,iCount);//匹配新的模版,進行數(shù)組的交換

    return 0;
}//模版函數(shù)的定義template<typename T>void Swap(T& a,T& b)
{
    T temp;
    temp = a;
    a = b;
    b = temp;
}

template<typename T>void Swap(T* a,T*b,int n)
{    for (int i=0;i<iCount;++i)
    {
        T temp;
        temp = a[i];
        a[i] = b[i];
        b[i] = temp;
    }
}

如上代碼新增了一個模版,用于交換兩個數(shù)組中的元素,原來的模版特征標為(T&,T&),新模版的特征標為(T[],T[]),int)。注意,在后一個模版中,最后一個參數(shù)的類型為具體類型(int),而不是通用類型,并非所有的模版參數(shù)都必須是模版參數(shù)類型。

顯示具體化:

  • 對于給定的函數(shù)名,可以有非模版函數(shù),模版函數(shù)和顯示具體化模版函數(shù)以及它們的重載版本。

  • 顯示具體化的原型和定義應(yīng)該以template<>打頭,并通過名稱來指出類型。

  • 具體化將覆蓋常規(guī)模版,而非模版函數(shù)將覆蓋具體化和常規(guī)模版。

下面是用于交換Job結(jié)構(gòu)的非模版函數(shù),模版函數(shù)和具體化的原型。

void Swap(job &,job&);//非模版函數(shù)

template <typename T>

void Swap(T&,T&);//模版函數(shù)

template <> void Swap<job>(job&,job&);//顯示具體化函數(shù),其中Swap后的job參數(shù)可去掉,則函數(shù)簽名為template <> void Swap(job&,job&);

前面指出,如果有多個原型,編譯器在選擇原型時,非模版將優(yōu)先于顯示具體化和模版版本,而顯示具體化將優(yōu)先于使用模版生成的版本。

如下面的調(diào)用:

double u,v;

Swap(u,v);//使用通用的模版

job a,b;

swap (a,b)//使用顯示具體化版本。

實例化和具體化:

 為了進一步了解模版,必須理解術(shù)語實例化和具體化。記住,在代碼中包含函數(shù)模版本身并不會生成函數(shù)的定義,它只是一個用于生成函數(shù)定義的方案。編譯器使用模版為特定類型生成定義時,得到的是模版實例(instantiation)。例如:函數(shù)調(diào)用Swap(i,j),使編譯器生成一個Swap()的一個實例,該實例使用int類型。模版并非函數(shù)定義,但使用int的模版實例是函數(shù)定義。這種實例化方式被稱為隱式實例化,因為編譯器之所以知道需要定義,是由于程序調(diào)用Swap()時提供了int參數(shù)。

  現(xiàn)在編譯器還可以允許顯示實例化,這意味著可以直接命令編譯器生成特定的實例,如Swap<int>。其句法是,聲明所選的種類-用<>符號指示類型,并在聲明前加上關(guān)鍵字template:

template void Swap<int>(int,int);//顯示實例化

實現(xiàn)了這種特性的編譯器在看到上述聲明后,將使用Swap()模版生成一個int類型的實例。

與顯示實例化不同的是,顯示具體化使用下面兩個等價聲明的之一:

template <> void Swap<int>(int,int);

template <> void Swap(int,int);

區(qū)別在于,這些聲明的意思是”不要使用Swap()模版來生成函數(shù)定義,而應(yīng)該使用獨立的、專門的函數(shù)定義顯示為int類型生成函數(shù)定義。

注意:試圖在一個編程單元中使用同一種類型的顯示具體化與顯示實例化將出錯。

感謝各位的閱讀!關(guān)于“C++模版函數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:C++模版函數(shù)怎么用-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article34/dsjhse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、做網(wǎng)站、外貿(mào)建站、網(wǎng)站排名、電子商務(wù)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(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)

微信小程序開發(fā)
精品人妻av区天天看片| 亚洲中文波霸中文字幕| 国产真人免费作爱视频网站| 国产精品久久久久久久av三级| 亚洲午夜一区二区精品| 欧美日韩在线不卡一区| 亚洲 精品一区二区| 国产精品老熟女一区二区| 日韩高清有码一区二区| 性欧美一区二区三区| 老汉av免费在线观看| 欧美日韩精品偷拍一区二区| 成人午夜福利视频大全| 日韩精品不卡在线观看| 亚洲av网站一区二区三区| 国产欧美日本精品视频| 97国产精品亚洲精品| 日本黄色高清视频一区| 91精品在线观看首页| 淫色网av人妻中文字幕| 视频一二区免费在线观看| 午夜看片福利欧美熟女| 免费人成网站在线观看| 婷婷久久五月综合激情| 国内在线免费观看av| 国产女主播在线观看视频| 日韩在线观看精品亚洲| 成人国产午夜福利网| 99精品国产麻豆一区二区三区| 91国内外精品自在线播放| 欧美黄片完整版在线观看| 国产精品一区二区免费式| 青青青久热国产精品视频| 国产精品久久综合网| 成人免费在线视频不卡| 亚洲人妖视频在线观看| 91免费观看视频高清| 亚洲黄色录像一区二区人妻黑人 | 少妇高潮试看二十分钟| 色男人天堂网在线视频| 亚洲欧洲一区二区免费|