最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?類模板與成員函數(shù)模板示例解析

 更新時(shí)間:2023年01月03日 15:57:20   作者:碼小方  
這篇文章主要為大家介紹了C++?類模板與成員函數(shù)模板示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

類模板

前面以函數(shù)模板為例,介紹了具體化與實(shí)例化。那么對(duì)于類模板,有什么不同呢?

類包括成員變量和成員函數(shù),他們都可以包含類模板的模板參數(shù)。而成員函數(shù)本身也可以是函數(shù)模板??聪旅娴膬蓚€(gè)類:

// 類模板
template <typename T>
class A {
private:
    T t;
public:
    void funcA(T t);
};
template <typename T>
void A<T>::funcA(T t) {
    cout << t;
}
// 成員函數(shù)模板
class B {
private:
    int t;
public:
    template <typename T>
    void funcB(T t);
};
template <typename T>
void B::funcB(T t) {
    cout << t;
}
int main()
{
    A<int> a1;
    a1.funcA(1);
    A<char*> a2;
    a2.funcA("2");
    B b;
    b.funcB(1);
    b.funcB("2");
}

類模板A中包含成員函數(shù)funcA;類B包含一個(gè)成員函數(shù)模板funcB。我們仔細(xì)看下二者的區(qū)別。

類模板與成員函數(shù)模板的區(qū)別

首先,類模版A中的成員函數(shù)的類型可以用類模板參數(shù)T,而成員函數(shù)模板做不到。

其次,在調(diào)用成員函數(shù)時(shí),類模板A需要先指定一種類型創(chuàng)建一個(gè)實(shí)例對(duì)象(如代碼中的a1),然后才能調(diào)用成員函數(shù),a1.funcA只能傳入int類型參數(shù)。如果想傳char*類型參數(shù),必須用char*創(chuàng)建一個(gè)實(shí)例(代碼中的a2)。

而對(duì)于類B,則創(chuàng)建一個(gè)實(shí)例對(duì)象(b)之后,可以任何類型作為參數(shù)來(lái)調(diào)用funcB。

只要明白了前面講的模板實(shí)例化,這里面的原因也很好理解。對(duì)于A來(lái)說(shuō),整個(gè)類是一個(gè)模版,當(dāng)使用int類型生成對(duì)象a1時(shí),也會(huì)對(duì)類模板A進(jìn)行實(shí)例化,生成A類,其中所有的T都會(huì)替換為int,因此生成的類只有一個(gè)成員函數(shù) void funcA(int)。如果想傳入char*,則必須實(shí)例化A<char*>這個(gè)類。

而對(duì)于類B,它本身只是一個(gè)普通類,只不過(guò)它包含一個(gè)成員函數(shù)模板。當(dāng)編譯器發(fā)現(xiàn)代碼中有調(diào)用這個(gè)成員函數(shù)funcB(int),編譯時(shí)會(huì)為funcB實(shí)例化;如果也有調(diào)用funcB(char*),則會(huì)為B生成funcB<char*>成員函數(shù)。也就是說(shuō),類B的成員函數(shù)的數(shù)量不是確定的,是根據(jù)funcB被調(diào)用的情況來(lái)決定到底實(shí)例化出多少個(gè)成員函數(shù)。

以上就是C++ 類模板與成員函數(shù)模板示例解析的詳細(xì)內(nèi)容,更多關(guān)于C++ 類模板成員函數(shù)模板的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

达拉特旗| 抚顺县| 延庆县| 湟中县| 石泉县| 天长市| 青神县| 苍梧县| 三穗县| 泾阳县| 灵寿县| 西贡区| 和政县| 闵行区| 木里| 建水县| 贵港市| 合肥市| 开鲁县| 迁西县| 大理市| 舟山市| 伽师县| 安龙县| 彝良县| 武夷山市| 阿坝县| 广德县| 阿图什市| 比如县| 东乡县| 宕昌县| 厦门市| 鄂温| 日喀则市| 永顺县| 太仆寺旗| 马公市| 双城市| 甘谷县| 保靖县|