C 與C 對比學習 模板,泛型

2021-09-30 15:38:06 字數 1191 閱讀 6094

我們知道有很多不同的物件型別可能有相同的操作,基本型別如數值型別的都有加減乘除,比大小啊.乙個個從現實中抽象出來的類就更是具體很多共性了.如果是同一類事物可以弄個父類出來就ok,比如動物都具體的某些通用操作就搞個animal基類完事.但如果不是同一類事物,就不容易整個繼承關係出來啊.比如人有身高,可以計算體重,一塊石頭也有長寬高,可以計算體重.如果有乙個計算體重的函式,大家都可以拿來用,只要傳不同的引數就行.函式過載可以實現類似的功能,但太麻煩了點,要整蠻多個函式啊.

於是在c++中就出現了模板(template)的概念.類中應用到模板就叫類模板,函式中應用到模板就叫函式模板.所謂模板嘛,就是個架子框架,我們拿來填充些內容才有實際用處.像做ppt時就有很多模板啊.c++中的模板就是裡面用到一些變數,型別是不知道的.只有你呼叫的時候傳個具體的型別,然後才會生成具體的類或模板,然後再呼叫.當然這是編譯器後台給你做了很多任務作.使用模板程式設計又叫泛型程式設計.

c#裡面沒有模板的概念,不過有個泛型的概念.有點像把模板簡化一下了.當然它們還是有些其他區別的.

函式模板

舉個最簡單的例子,比較兩數大小

template//也可以把typename換成class,t也可以隨便換成啥

t max(t one, t two)

return one > two ? one : two;

int a = 123;

int b = 456;

int c = max(a,b);

類模板

template

class ******

public:

tt max(tt a,tt b)

return a > b ? a : b;

double a = 123;

double b = 543;

******sm;

double c = sm.max(a,b);

class temp

public bool max(t a, t b)

if (a.equals(b))

return true;

else

return false;

temptemp = new temp();

int a = 123;

int b = 123;

bool result = temp.max(a, b);

上面都是最為簡單的例子了,實際上還有很多複雜的用法的.

C 模板(泛型)

模板概念 模板是建立通用模具,大大提高復用性,將型別引數化。c 泛式程式設計思想,主要利用的技術就是模板 c 提供模板機制 函式模板和類模板 函式模板和類模板區別 類模板沒有自動型別推導使用方式 類模板在模板引數列表中可以有預設引數 作用 建立通用函式,其函式返回值型別和形參型別可以不具體制定,用乙...

C 模板與泛型(1)

物件導向程式設計 oop 和泛型程式設計都能處理在編寫程式時不知道型別的情況。不同之處在於 oop能處理型別在程式執行之前都未知的情況 而在泛型程式設計中,在編譯時就能獲知型別了。模板和泛型非常重要,比如在stl中vector等都是泛型程式設計,先說說函式模板。使用template關鍵字可以定義函式...

C 模板與泛型程式設計

1 物件導向程式設計總是以顯式介面和執行時多型解決問題。模板及泛型世界不同,在此世界中顯式介面和執行時多型仍然存在,但重要性降低,反倒是隱式介面和編譯器多型移到前頭。執行時多型和編譯時多型 前者表示哪乙個虛函式該被繫結,後者表示哪乙個過載函式該被呼叫。顯式介面由函式的簽名式 函式名稱 引數型別 返回...