1、模板概念
模板是泛型程式設計的基礎。所謂泛型程式設計就是編寫與型別無關的邏輯**,是一種復用的方式。
模板分為模板函式和模板類。
2、typename 與 class
template
// 採用 class 來宣告模板
class ;
template
// 採用 typename 來宣告模板
class ;
這兩種一般來說 typename 用於內建型別,而 class 來宣告類。但是 typename 也可以用作聲
明類,而 class 也可以用來宣告內建型別。
區別:當 t 是乙個類的時候,並且這個類又有子類,應該用 typename //未懂!
3、特化
特化分為兩種:
偏特化
模板的全特化與偏特化都是建立在已定義的模板基礎之上,不能夠單獨存在。
4、模板的分離編譯
// fun.h
template
void fun(const t&);
// fun.cpp
#include "fun.h"
template
void fun(const t& t)
// main.cpp
#include
#include "fun.h"
int main()
這個**在進行鏈結的時候會出現問題。原因是在**編譯的時候,由於 fun.cpp 中的 fun函式中沒有引數,在例項化時無法生成**。所以鏈結時 main.cpp 呼叫 fun 時,找不到函式 fun (int)實現的**,所以鏈結錯誤。
解決方式:
5、總結
優點:缺點:
C 模板總結
前提 我們要實現乙個通用的交換函式swap,就是讓它適用於任何乙個型別。比如 int,char,double.但是我們要寫很多交換的函式,對swap函式進行過載。那我們如何解決這個問題?可不可以給編譯器乙個模子,讓編譯器來給我們實現不同型別的轉化?1.概念 函式模板代表了乙個函式家族,在使用時被引數...
C 基礎 C 模板總結
模板是泛型程式設計的基礎,分為模板函式和模板類 泛型程式設計就是與型別無關的邏輯 是一種復用的方式。那麼為什麼要有泛型程式設計呢?c 是一門強型別的語言,無法像動態語言那樣,可以寫一段邏輯 把任意型別傳進去。為了解決這個問題所以有了泛型程式設計,通過把通用的邏輯設計為模板,可以擺脫型別的限制,提供了...
C 模板類總結
一 模板簡介 在c 中,模板讓程式設計師能夠定義一種適用於不同型別的物件行為。這聽起來有點像巨集,但巨集不是型別安全的,而模板是型別安全的。二 模板宣告語法 關鍵字template標誌著模板類宣告的開始,接下來是模板引數列表。該引數列表包含關鍵字typename,它定義了模板引數objecttype...