C 16章 模版與泛型程式設計

2021-08-14 04:26:12 字數 908 閱讀 9012

template

//模版引數列表,用逗號分割多個模版引數,且模板引數列表不可能空。

//引用避免了引數賦值

int compare(const t &v1 , const t &v2)

template

//模版引數列表,用逗號分割多個模版引數

int compare(const

char (&v1)[u] , const

char (&v2)[v])

類模板是用來生成類的藍圖。與函式模板不同,編譯器不能為類模板推斷模板引數型別,必須使用尖括號提供額外的引數來代替模板實參列表。

blobptr& operator++();//類內部宣告或定義不需要新增模板引數

template

//類外面定義需要新增模板引數

blobptrblobptr::operator++(int)

template

class blobptr;//宣告類,因為下面友元宣告需要用到

template

class blob; //宣告類,因為下面==用到了

template

bool

operator==(const blob&, const blob&);//宣告函式模版

//類模板,成員函式定義類內和類外有區別。

template

class blob

blob ca;// blobptroperator==(char)都是本物件友元,blobptr成員可以訪問ca私有部分。和普通類規則完全一模一樣。

模板引數名字可以使用任何名字。

《Effective C 》模版與泛型程式設計

item41 了解隱式介面和編譯期多型 縱使你從未使用過templates,應該不陌生 執行期多型 和 編譯期多型 之間的差異。因為它類似於 哪乙個過載函式該被呼叫 發生在編譯期 和 哪乙個virtual函式應該被繫結 發生在執行期 之間的差異。加諸於template引數身上的隱式介面,就像加諸於c...

第16章 模板與泛型程式設計 10

16.4.4 queue和queueitem的友元宣告 1.將類模板設為友元 template class queueitem type item queueitem next friend class queue 2.queue輸出操作符 template ostream operator ost...

第16章 模板與泛型程式設計 13

16.5 乙個泛型控制代碼類 16.5.1 定義控制代碼類 ifndef handle h define handle h include stdafx.h include using namespace std templateclass handle t operator t operator ...