C 系列筆記 04 C 泛型程式設計

2021-10-07 02:14:53 字數 2216 閱讀 2558

類模板模板中的繼承

模板泛型的實現,泛型模板的思想。

泛型的本質是型別的引數化。

注意!不傳參時必須顯式指定型別,看下面的例子。

template

<

class

t>

void

function()

;int

main()

函式模板與普通函式的區別

呼叫順序

過載時,優先呼叫普通函式

template

<

class

t>

t function

(t param1, t param2)

;int

function

(int param1,

int param2)

;int

main()

如果想要強制呼叫模板函式,可以顯式指定空模板引數

function<

>

(a, b)

;

如果模板函式擁有更好的引數匹配,則會呼叫模板函式

template

<

class

t>

t function

(t param1, t param2)

;int

function

(int param1,

int param2)

;int

main()

模板函式允許過載

template

<

class

t>

t function

(t param1, t param2)

;template

<

class

t>

t function

(t param1, t param2, t param3)

;

**:

template

<

class

type1

,class

type2

>

class

type

;// 類外實現

template

<

class

type1

,class

type2

>

type

::type

(type1 a, type2 b)

template

<

class

type1

,class

type2

>

void type

::method

(type1 a)

首先要了解一點,類模板的方法函式在編譯階段不會生成,他在執行時生成。

我們調庫的一般方式是這樣的:

#include

"type.h"

intmain()

會報錯,無法解析的外部命令,即在鏈結階段找不到對應的函式去呼叫。

因為此時還未建立具體的類模板方法函式,當然找不到。

此時可以這樣做:

#include

"type.cpp"

intmain()

不過,正常情況下,我們一般對類模板不做分檔案編寫,將宣告和實現放在乙個.h檔案中。

模板例項內部的資料型別不確定,想作為引數傳遞,可以在引數列表裡直接指定,或作為乙個函式模板去定義。

錯誤示例:

不允許繼承抽象的類

template

<

class

t>

class

base

;// 繼承

class

type

:public base

;

要繼承,可以抽象,也可以具體。

C 筆記 04C 模版1

include using namespace std oop三大特徵 封裝 繼承 多型 第二部分 模版 c templates 1.函式模版 2.類模板 需要搞清楚的知識點 函式模版 模版的例項化,顯示,隱式 模版函式 模版的實參推演 模版型別引數 模版的非型別引數 模版的特例化 專用化 模版函式...

c 泛型程式設計

對於兩個不同的概念a和b,如果概念a所需求的所有功能也是概念b所需求的功能,那麼就說概念b是概念a的子概念。例如 標準模板庫 standard template library,簡稱stl 提供了一些非常常用的資料結構和演算法 將函式物件作為演算法的引數而不是將函式所執行的運算作為演算法的一部分。使...

C 泛型程式設計

1.模板介紹 泛型程式設計 指的是直接應用 使用模板編寫好的函式模板或類模板庫程式 進行程式設計。在具體使用時,程式設計師只需向使用的庫函式或類模板提供型別或值即可。模板是泛型程式設計的基礎。比如使用標準模板庫中的容器 迭代器進行程式設計,就是泛型程式設計。模板函式 模板函式 強調的是函式,函式使用...