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

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

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

前言:

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

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

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

注意:

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

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

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

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

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

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

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

2、類模板的特化

類模板進行特化的語法如下:

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

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

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

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

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

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

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

相關(guān)文章

最新評論