C 模板總結

2021-08-23 14:21:52 字數 1008 閱讀 5205

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...