C C log2000 函式模板與類模板筆記1

2021-08-02 02:10:12 字數 3355 閱讀 7061

函式模板; 類模板;

函式模板定義:

template

t>

//模板字首,通知編譯器接下來的函式定應負或者函式宣告是乙個模板,class此處不是類,而是型別(type).t是型別引數,可被任意型別替代(如int,char,double.....)

//因此,函式模板實際是針對不同型別的函式的乙個大集合.

template

《型別1 變數1 , 型別2 變數2, ….. > 返回型別 函式名(形參表)

編譯器根據該函式實參資料型別,生成相應的過載函式,該過載函式稱為模板函式,是乙個實實在在的函式。

下面看幾個例子

函式模板例項

大小比較系統

#include 

#include

using

namespace

std;

template

t max(t a, t b, t c)

if (c > a)

return a;

}void main()

字串轉換系統

#include 

#include

#include

using

namespace

std;

template

t fromstring(const

string& s)

template

string tostring(const t& t)

void main()

矩陣運算

矩陣運算矩陣轉置與矩陣相乘

#include 

#include

using namespace std;

void inverse(int [3][6], int [6][3]);

void multi(int[6][3], int [3][4], int [6][4]);

void output(int [6][4]);

int main()

;int matrix2[3][4] = ;

inverse(matrix1, middle);

multi(middle, matrix2, result);

output(result);

return 0;

}void inverse(int matrix1[3][6], int middle[6][3])}}

void multi(int middle[6][3], int matrix2[3][4], int result[6][4])}}

}void output(int result[6][4])

cout << endl;}}

-------------------------------

運算結果:

result

257 210 223 176

338 276 298 236

419 342 373 296

81 54 51 24

27 18 57 48

45 30 87 72

-----------------------------------------

矩陣運算:矩陣轉置與矩陣相乘函式模板。下標作為引數傳遞

#include 

#include

using

namespace

std;

template

void inverse(t1* mat1, t2* mat2, int a, int b);

template

void multi(t1* mat1, t2* mat2, t2* result, int a, int b, int c);

template

void output(t* mat, char* s, int a, int b);

int main()

; int matrix2[3][4] = ;

char* s1 = "result";

char* s2 = "middle";

inverse(matrix1, middle, 6, 3);

//顯式: inverse(matrix1, middle, 6,3)

multi(middle, matrix2, result, 6, 3, 4);

//顯式: multi(middle, matrix2, result, 6, 3,4);

output(matrix1, "matrix1", 3, 6);

output(middle, s2, 6, 3);

output(matrix2, "matrix2", 3, 4);

output(result, s1, 6, 4);

return0;}

template

void inverse(t1* mat1, t2* mat2, int a, int b)

}}template

void multi(t1* mat1, t2* mat2, t2* result, int a, int b, int c)}}

}template

void output(t* mat, char* s, int a, int b)

cout

<< endl;

}}------------------------------------------

運算結果:

函式模板與類模板

c 提供的函式模板可以定義乙個對任何型別變數進行操作的函式,從而大大增強了函式設計的通用性。使用函式模板的方法是先說明函式模板,然後例項化成相應的模板函式進行呼叫執行。函式模板的一般說明形式如下 template 模板形參表 返回值型別 函式名 模板函式形參表 其中,模板形參表 可以包含基本資料型別...

函式模板與類模板

函式模板與類模板有什麼區別?答 函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化 必 須由程式設計師在程式中顯式地指定。即函式模板允許隱式呼叫和顯式呼叫而類模板只能顯示呼叫 這期間有涉及到函式模板與模板函式,類模板與模板類的概念 類似於類與類物件的區 別 請看下面例子 注意 ...

函式模板與類模板

這段時間在複習c 的東西,把一些面試常問的一系列問題羅列下,我方便自己重溫 1.函式模板 函式模板是為引數型別一致,引數個數一樣,功能 相同的一類函式提供的函式介面,在編譯時能夠動態的匹配 根據以上的嚴格限制我們可以知道,函式模板其實運用是非常有限的,所以一般不常用,在這裡提出來是為了引出類模板的概...