欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何C++使用模板特化功能

 更新時(shí)間:2022年03月09日 16:15:59   作者:機(jī)器學(xué)習(xí)入坑者  
這篇文章主要介紹了如何C++使用模板特化功能,通過定義模板,使得函數(shù)或者類不依賴于特定的類型,這樣大幅提升了代碼的復(fù)用性。更多詳細(xì)內(nèi)容需要的小伙伴可以參考一下

前言:

通過定義模板,使得函數(shù)或者類不依賴于特定的類型,這樣大幅提升了代碼的復(fù)用性。

然而,不管是類模板還是函數(shù)模板,對(duì)所有的類型都是采用相同的處理方式(同一份代碼)。為此,C++提出了“模板特化的概念”,對(duì)特定類型提供模板的改造。

比如,對(duì)于函數(shù)模板來說,可以通過特化指定特定的類型,針對(duì)此特定類型對(duì)函數(shù)體內(nèi)容進(jìn)行重寫,使得函數(shù)對(duì)特定類型實(shí)現(xiàn)特定功能。

注意:

按照語法,對(duì)函數(shù)模板和類模板進(jìn)行特化后,就變?yōu)槠胀ê瘮?shù)和普通的類,而不再是模板。

1、函數(shù)模板的特化

對(duì)于函數(shù)模板來說,其特化語法如下:

template <>
返回類型 已定義的函數(shù)模板名<具體類型>(參數(shù)表){
    針對(duì)特定類型的具體實(shí)現(xiàn);
}

其中“template <>”是特化的固定格式。下面的例子定義了函數(shù)模板play(),并對(duì)此模板進(jìn)行特化,特化過程中指定具體類型為“int”:

// 已定義好的函數(shù)模板
template <class Q>
void play(Q p) {
?? ?printf("play with Q! \n");
}

// 對(duì)以定義好的函數(shù)模板play()進(jìn)行特化
template <>?
void play<int>(int) {
?? ?printf("play with int! \n");
}

2、類模板的特化

類模板進(jìn)行特化的語法如下:

template <>
class 類模板名<具體類型>{
    類定義;
}

類模板的成員函數(shù)在類外實(shí)現(xiàn)時(shí),語法如下:

返回類型 類模板名<具體類型>::函數(shù)名{
    函數(shù)體;
}

下面是對(duì)類模板Duck進(jìn)行特化的代碼,特化過程中指定了類型為"int":

template <class T>
class Duck {
public:
?? ?void run() { printf("T run! \n"); }
};

// 對(duì)類模板Duck進(jìn)行特化
template <>
class Duck<int> {
public:
?? ?void run();
};
// 成員函數(shù)在模板類以外實(shí)現(xiàn)
void Duck<int>::run() {
?? ?printf("int run! \n");
}

到此這篇關(guān)于如何C++使用模板特化功能的文章就介紹到這了,更多相關(guān)C++模板特化功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論