C 模板的理解

2021-09-12 06:33:09 字數 1419 閱讀 3052

泛型程式設計

函式模板

函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。

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是...