函式模板與類模板

2021-09-19 11:48:26 字數 1957 閱讀 2779

//函式模板實現char int陣列排序

//函式模板本質:型別引數化

//函式模板機制:兩次編譯

#include

using namespace std;

template

void

mysort

(t *myarray, t1 size)}}

}template

void

myprint

(t *myarray, t1 size)

cout << endl;

}int

main01()

;int size =

sizeof

(myarray)

/sizeof

(*myarray)

; mysort<

int,

int>

(myarray, size)

; myprint<

int,

int>

(myarray, size)

;char mystring=

"agriyumvc953sdfg7"

;int len =

strlen

(mystring)

; mysort<

char

,int

>

(mystring, len)

; myprint<

char

,int

>

(mystring, len)

;return0;

}

//類模板 派生 1 普通類 2派生類

#include

using namespace std;

template

class a

void

printa()

protected:

t a;};

//派生普通類,子類從模板類繼承的時候,需要讓編譯器知道 父類的資料型別具體是什麼

class b : public a<

int>

void

printb()

private:

int b;};

//派生 派生類,兩個模板具體型別都暫不知道

template

class c : public a

void

printc()

protected:

t c;};

intmain02()

//總結:友元函式只用來進行 左移 右移操作符過載,不要濫用,特別是在類模板中

#include

using namespace std;

//模板函式在 類內部 或 類外部 或.h和.cpp分開

template

//類模板

class complex

;template

complex::

complex

(t a, t b)

//類模板裡面的建構函式

template

void complex::

printcom()

//因為類模板型別是不確定的,所以在類外都要帶,函式體內屬於類內部,可帶可不帶

//檢查需不需要帶,主要檢查函式三要素:名稱 引數 返回值

template

complex complex

::operator+

(complex

& c2)

//過載+

template

ostream& operator<<

(ostream& out, complex

& c3)

//過載<<

intmain()

函式模板與類模板(模板類)

什麼是泛型程式設計?泛型程式設計 編寫與型別無關的通用 是 復用的一種手段。模板是泛型程式設計的基礎。模板分為函式模板和類模板 下面我們就來說說函式模板 函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的型別版本 格式 template 返回值型別 函式名 引數列表 templatet1 ...

模板 函式模板與類模板

模板 template 是乙個將資料型別引數化的工具。模板分為函式模板和類模板兩種。在定義模板的時候不說明某些函式引數或者資料成員的型別,而將它們的資料型別作為模板引數。在使用模板時根據實參的資料型別確定模板引數即資料型別,從而得到模板的乙個例項。函式模板 function template 函式模...

函式模板與類模板

c 提供的函式模板可以定義乙個對任何型別變數進行操作的函式,從而大大增強了函式設計的通用性。使用函式模板的方法是先說明函式模板,然後例項化成相應的模板函式進行呼叫執行。函式模板的一般說明形式如下 template 模板形參表 返回值型別 函式名 模板函式形參表 其中,模板形參表 可以包含基本資料型別...