C 複習之模板(自己要驗證,才能更好掌握)

2021-10-04 23:04:03 字數 2676 閱讀 7575

#include

using

namespace std;

class

coordinate

;coordinate::

coordinate

(int x,

int y)

void

printxy

(coordinate &c)

intmain()

class

circle

;class

coordinate

;class

circle

private

: coordinate m_coor;

};在這裡插入**片

友元關係不可傳遞;

友元關係具有單向性;

友元宣告的形式和數量不受限制;

友元只是封裝的補充,設計巧妙可以避開就更好,不然會暴露資料。

#include

using

namespace std;

class

tank

~tank()

static

intgetcount()

static

int s_icount;

private

: string m_strcode;};

int tank::s_icount =0;

intmain()

靜態的成員函式只能操作靜態資料。

因為靜態是隨類存在,編譯的。

靜態資料成員必須單獨 初始化。

靜態資料成員只有乙份,且不依賴物件而存在,求乙個物件的大小時是不包含靜態資料的。

本質:函式過載

關鍵字:operator

一元運算子的過載

-負號的過載:

成員函式的過載:

#include

using

namespace std;

class

coordinate

;coordinate::

coordinate

(int x,

int y)

coordinate& coordinate::

operator-(

)int

main()

友元函式過載:

#include

using

namespace std;

class

coordinate

;coordinate::

coordinate

(int x,

int y)

coordinate operator

-(coordinate &coor)

intmain()

後置++過載

#include

using

namespace std;

class

coordinate

;coordinate::

coordinate

(int x,

int y)

coordinate coordinate::

operator++(

int)

intmain()

《運算子過載

#include

using

namespace std;

class

coordinate

;coordinate::

coordinate

(int x,

int y)

ostream&

operator

<<

(ostream &out,

const coordinate &coor)

intmain()

#include

using

namespace std;

template

<

class

t>

t maxx

(t a,t b)

intmain()

變數作為函式模板

template

<

int size>

void

display()

intmain()

多引數函式模板

template

<

typename t,

typename c>

void

display

(t a, c b)

intmain()

typename和class可以混用。

模板**暫時不能分離編譯。

得將所有**都寫在**件裡。

C 複習之函式模板

模板的意義 對型別也可以進行引數化 函式模板 把處理不同型別的公共邏輯抽象成函式,就得到了函式模板。不進行編譯,因為型別不知道 模板的例項化 函式呼叫點進行例項化,會生成乙個真正的函式 模板函式 由函式模板例項化出來的函式,需要被編譯器所編譯 模板的實參推演 可以根據使用者傳入的實參型別,來推導出模...

C 模板複習參考筆記

型別引數化 template 返回型別 函式名 引數列表 這裡的返回型別,引數列表的形參型別 可以寫成你在尖括號 裡規定的形參類名,如t,如下 template t min t a,m b 如果你要定義模板成員方法,1.因為它是乙個成員方法 寫外邊,加類名和作用域符 2.因為它是乙個模板方法 配合t...

複習C (十九)函式模板

函式模板是通用的函式描述,它們使用泛型來定義函式,其中泛型可用具體的型別替換。通過將型別作為引數傳遞給模板,可使編譯器生成該型別的函式。這有時也被稱為通用程式設計。template typename anytype void swap anytype a,anytype b 關鍵字template和...