目錄類模板
模板是泛型程式設計的基礎,泛型程式設計即以一種獨立於任何特定型別的方式編寫**,即不具體制定資料型別模板是建立泛型類或函式的藍圖或公式
#include #include using namespace std;
// 函式模板實現通用資料型別交換
template// t屬於通用資料型別
void myswap(t &a,t &b)
// 使用函式模板
void test01()
int main()
a = 0,b = 1
a = 1,b = 0
a = 0,b = 1
a = 1,b = 0
普通函式可以發生隱式型別轉化
如果普通函式和函式模板(同名)都可以匹配,優先匹配普通函式
如果要強制呼叫函式模板,則要加空模板引數列表myswap<>(a,b)
函式模板也可以產生函式過載
如果函式模板可以產生更好的匹配,那麼優先匹配函式模板
#include using namespace std;
class person
};// 模板並不真正通用
// 對於特殊資料型別,可以具體化實現
templatebool mycompare(t &a, t &b)
// 利用具體化實現,解決特殊資料型別
// 語法:template<> 函式名 + 具體實現
template<> bool mycompare(person &a, person &b)
int main()
0
#include #include using namespace std;
// 模板中也可以指定預設引數
templateclass person
};int main()
#includeusing namespace std;
class person1
};class person2
};//類模板中成員函式並不是一開始建立,而是在替換t後,才去生成
templateclass testclass
void func2()
t obj;
};void test01()
int main()
#includeusing namespace std;
#include //模板中 也可以使用預設引數
templateclass person
void showperson()
t1 m_name;
t2 m_age;
};//1、指定傳入型別
void dowork(person &p)
void test01()
//2、將引數模板化
templatevoid dowork2(person &p)
void test02()
//3、將類模板化
templatevoid dowork3(t &p)
void test03()
int main()
t = 6personinst7__cxx1112basic_stringicst11char_traitsicesaiceeeie
姓名: bill 年齡: 100
#includeusing namespace std;
templateclass base
;//子類在繼承時,必須確定出父類的t的資料型別,否則無法給t分配記憶體空間
class son :public base;
templateclass base2
;templateclass son2 :public base2
t1 m_b;
};void test01()
int main()
t1的型別為: i
t2的型別為: d
#includeusing namespace std;
#include templateclass person
void showperson();
//t1 m_name;
t2 m_age;
};templateperson::person(t1 name, t2 age)
templatevoid person::showperson()
void test01()
int main()
姓名: aaa 年齡: 10
類內實現#includeusing namespace std;
#include templateclass person
public:
person(t1 name, t2 age)
private:
t1 m_name;
t2 m_age;
};void test01()
int main()
類外實現#includeusing namespace std;
#include //先讓編譯器看到person類宣告
templateclass person;
//先讓編譯器看到函式模板 printperson的存在
templatevoid printperson(person& p);
templatevoid printperson2(person& p)
templateclass person
private:
t1 m_name;
t2 m_age;
};templatevoid printperson(person& p)
void test01()
int main()
c 學習筆記之成員模板
任意類 模板或者是飛模板 可以擁有類模板或函式模板的成員,這種成員成為成員模板,成員模板不能為虛。成員模板的乙個例子是標準容器的assign成員,接受兩個迭代器的assign版本使用模板形參表示其迭代器形參的型別。另乙個例子就是接受兩個迭代器的容器建構函式。1 定義成員模板 模板成員宣告看起來像任意...
c 學習筆記之成員模板
任意類 模板或者是飛模板 可以擁有類模板或函式模板的成員,這種成員成為成員模板,成員模板不能為虛。成員模板的乙個例子是標準容器的assign成員,接受兩個迭代器的assign版本使用模板形參表示其迭代器形參的型別。另乙個例子就是接受兩個迭代器的容器建構函式。1 定義成員模板 模板成員宣告看起來像任意...
C 之模板 模板的學習 學習模板
c 之模板 模板學習 學習模板 模板就是建立通用的模具,大大提高復用性 函式模板 c 提供兩種模板機制函式模板和類模板 函式模板語法 函式模板作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 語法 template typename t 函式宣告或定義解釋 t...