泛型程式設計
函式模板
函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。
templatevoid swap(t& left, t& right)
int main()
模板例項化
隱式例項化
templateadd(const t& left, const t& right)
int main()
顯示例項化
templateadd(const t& left, const t& right)
int main()
函式模板的匹配規則
函式模板的匹配原則是:如果顯示的指定模板,那就使用模板去調,如果沒有指定,那就優先調現成的函式介面。
類模板
#include #include using namespace std;
templateclass vector
void pushback(const t& x)
~vector()
int size()
int size()const
t& operator(size_t pos)
const t& operator(size_t pos)const
private:
t* _array;
size_t _capacity;
size_t _size;
};void printvector(const vector& v)//當傳的是const物件時,調的函式也必須是const的
}int main()
cout << endl;
vectorv1;
v1.pushback('a');
v1.pushback('b');
v1.pushback('c');
for (size_t i = 0; i < v1.size(); i++)
system("pause");
return 0;
}
當我們在類裡面宣告,類外定義的時候,應該在最前面加上模板引數:
templatevector::vector(size_t capacity = 10)
:_array(new t[capacity])
, _capacity(capacity)
, _size(0)
{}
需要注意的的是,在類和物件中:
vector//是型別
而在模板中:
vector//是類名
vector//是型別
C 的模板理解
2 非型別模板引數 1.1 模板的概念 模板就是生成乙個通用的函式,這個函式可以接受任意資料型別的引數,可以返回任意型別的值。模板是泛型程式設計的基礎。所謂泛型程式設計就是編寫與型別無關的邏輯 是一種強大的復用方式。1.2 模板的分類 1.2.1 模板函式 template1 class 形參2,返...
理解C 模板
模板就是實現 重用機制的一種工具,模板通常在較大的 庫中使用,目的是實現 的可重用性和程式的靈活性。它可以實現型別引數化,即把型別定義為引數,從而實現了真正的 可重用性。模版可以分為兩類,乙個是函式模版,另外乙個是類模版。宣告方式 t是乙個模板引數,它接受不同的資料型別 如int,float等 而c...
C 學習8 模板初步理解
類模板是在類的定義時,不能確定成員的型別時,為了防止 的冗餘,用t代替。t是乙個型別,告訴編譯器,型別還沒有繫結,不知道現在是什麼型別。使用的時候,類名後要用尖括號把型別名括起來。complex int a 1,2 complex double a 1.0,2.0 當編譯時,編譯器看到了使用者的t是...