函数模板完全特化.cpp
#include <iostream>
// ----------------------------------
template<class T>
bool IsEqual(T t1, T t2) // 泛型版
{
if (t1 == t2)
return true;
return false;
}
template<> // 函数模板特化,此句可略(重载)
bool IsEqual(char *t1, char *t2) // 特化版
{
if (strcmp(t1, t2) == 0)
return true;
return false;
}
Unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "函数模板完全特化.cpp"
#include "Unit1.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
char s1[] = "ABC";
char s2[] = "ABD";
UnicodeString b1 = "0";
if (IsEqual(168, 168)) {
b1 = "1";
}
UnicodeString b2 = "0";
if (IsEqual(s1, s2)) {
b2 = "1";
}
Memo1->Clear();
Memo1->Lines->Add("数字比较结果:");
Memo1->Lines->Add(b1); // 调泛型版
Memo1->Lines->Add("字符数组比较结果:");
Memo1->Lines->Add(b2); // 调特化版
// 函数模板偏特化:可用函数模板重载替代
}
输出效果