函式模板; 類模板;函式模板定義:
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.函式模板 函式模板是為引數型別一致,引數個數一樣,功能 相同的一類函式提供的函式介面,在編譯時能夠動態的匹配 根據以上的嚴格限制我們可以知道,函式模板其實運用是非常有限的,所以一般不常用,在這裡提出來是為了引出類模板的概...