C 中的類屬(泛型)機制 模板

2021-10-14 10:31:42 字數 1544 閱讀 6033

定義:帶有型別引數的函式

格式:

template

<

classt1,

classt2,

....

>

//也可以是typename

《返回值型別》

《函式名》

(《參數列》

)

t1、t2是函式模板的型別引數

使用函式模板定義的函式時需要提供具體型別,返回值型別,參數列中的引數型別以及函式體中的區域性變數的型別可以是t1,t2等。示例:

template

<

class

t>

void

sort

(t elements,

unsigned

int count)

函式模板定義了一系列過載的函式,首先必須要對函式模板進行例項化(生成具體的函式),函式模板的例項化通常是隱式的,有時需要在程式中顯式地例項化函式模板。示例:

#include

using

namespace std;

template

<

class

t>

swap

(t &x, t &y)

intmain()

函式模板的偏特化、特化:

template

<

classt1,

class

t2>

void

func

(t1 a,t2 b)

//特化:全部模板引數特化

template

<

>

void

func

(double a,

int b)

//偏特化:部分函式模板引數特化

template

<

class

t2>

void

func

(float a,t2 b)

定義:如果乙個類的成員的型別可變,則稱為類屬性

格式:

template

<

classt1,

classt2,

...>

class

《類名》

與函式模板不同的是,類模板只能進行顯式的例項化。如果有需要,可與模板函式結合,利用模板函式隱式例項化模板類。

類模板中的靜態成員:

#include

using

namespace std;

template

<

class

t>

classa;

template

<

class

t>

int a

::x=12;

intmain()

C 模板(泛型)

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

C 泛型程式設計 模板

在學習c c 過程中,我們可能常用幾種函式,由於傳入的引數不同,需要進行不同的函式的編寫,在c語言中需要根據引數和功能的不同重新編寫新的函式,而在c 中有函式過載這樣的機制,一定程度上解決了問題,但是 過載的函式僅僅只是型別不同,的復用率比較低,只要有新型別出現時,就需要增加對應的函式 的可維護性比...

C 泛型程式設計(模板)

2.類模板 我們先來看乙個概念 泛型程式設計 使用模板,編寫和型別無關的 沒有模板之前,一些函式或者類,針對不同的型別需要寫很多重複的 函式 比如交換函式swap,假如傳入的資料型別不同,int,char,double。我們要實現不同的型別物件函式。類 比如我們像實現乙個資料結構棧stack,sta...