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

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

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

類模板

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

類包括成員變量和成員函數(shù),他們都可以包含類模板的模板參數(shù)。而成員函數(shù)本身也可以是函數(shù)模板。看下面的兩個類:

// 類模板
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包含一個成員函數(shù)模板funcB。我們仔細看下二者的區(qū)別。

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

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

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

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

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

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

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

相關文章

  • 基于Matlab制作一個不良圖片檢測系統(tǒng)

    基于Matlab制作一個不良圖片檢測系統(tǒng)

    這篇文章主要為大家詳細介紹了如何基于Matlab制作一個不良圖片檢測系統(tǒng),文中的示例代碼講解詳細,感興趣的可以跟隨小編一起了解一下
    2022-07-07
  • C++ 實現(xiàn)雙向鏈表的實例

    C++ 實現(xiàn)雙向鏈表的實例

    這篇文章主要介紹了C++ 實現(xiàn)雙向鏈表的實例的相關資料,需要的朋友可以參考下
    2017-07-07
  • VS報錯C1189及MSB3721解決方法

    VS報錯C1189及MSB3721解決方法

    在使用VS進行CUDA編譯時出現(xiàn)錯誤,本文主要介紹了VS報錯C1189及MSB3721解決方法,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Opencv圖像處理之輪廓外背景顏色改變

    Opencv圖像處理之輪廓外背景顏色改變

    這篇文章主要為大家詳細介紹了Opencv圖像處理之輪廓外背景顏色改變,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 一起聊聊C++中的特殊成員函數(shù)

    一起聊聊C++中的特殊成員函數(shù)

    在C#中要說類默認給我們定義的特殊成員函數(shù),莫過于構造函數(shù),但在?C++?中這樣的特殊函數(shù)高達6種,本文就整合一下和大家一起聊一聊
    2022-07-07
  • 數(shù)據(jù)結構 C語言實現(xiàn)循環(huán)單鏈表的實例

    數(shù)據(jù)結構 C語言實現(xiàn)循環(huán)單鏈表的實例

    這篇文章主要介紹了數(shù)據(jù)結構 C語言實現(xiàn)循環(huán)單鏈表的實例的相關資料,需要的朋友可以參考下
    2017-05-05
  • 為什么要學習C語言 C語言優(yōu)勢分析

    為什么要學習C語言 C語言優(yōu)勢分析

    不止一個學生問到我:“老師,為什么我們的應用程序設計要學C語言而不是別的?C語言不是已經(jīng)過時了嗎?如果現(xiàn)在要寫一個Windows程序,用VB或Dephi開發(fā)多快呀,用C行嗎?退一萬步,為什么選擇C而不是C++呢?”
    2013-07-07
  • Qt creator中項目的構建配置和運行設置的步驟

    Qt creator中項目的構建配置和運行設置的步驟

    使用 Qt Creator 集成開發(fā)環(huán)境構建和運行程序是一件非常簡單的事情,一個按鈕或者一個快捷鍵搞定全部,本文主要介紹了Qt creator中項目的構建配置和運行設置的步驟,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言撲克牌游戲示例

    C語言撲克牌游戲示例

    大家好,本篇文章主要講的是C語言撲克牌游戲示例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言函數(shù)棧幀的創(chuàng)建和銷毀詳解

    C語言函數(shù)棧幀的創(chuàng)建和銷毀詳解

    這篇文章主要為大家詳細介紹了C語言函數(shù)棧幀的創(chuàng)建和銷毀,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

平顺县| 都兰县| 安陆市| 齐齐哈尔市| 玉林市| 尼木县| 凤台县| 上栗县| 浦县| 自治县| 垣曲县| 循化| 宜宾市| 加查县| 皋兰县| 简阳市| 资中县| 广东省| 广宁县| 洪泽县| 巴楚县| 乌鲁木齐市| 响水县| 曲水县| 嫩江县| 平昌县| 海城市| 延津县| 延边| 井研县| 叶城县| 如皋市| 仁寿县| 清苑县| 泌阳县| 紫阳县| 灌南县| 新余市| 安陆市| 仁怀市| 广东省|