《C 模板類篇 imooc》筆記

2021-08-09 07:29:08 字數 2577 閱讀 1209

友元全域性函式:

//全域性函式

void printtime(time &t)

// 在time類中宣告

friend

void printtime(time &t);

通過使用友元,就能夠使得物件直接訪問它的私有資料成員和成員函式。

友元成員函式:

class time;

void printtime(time &t);

#include

"hour.h"

friend void hour::printtime(time &t);

time t;

hour h;

h.printtime(t);

友元關係不可傳遞;友元短息單向性。友元是封裝的補充。

class

match;

class

time

;

如果不設定友元類,必須將time中資料成員設定為public才能使得match呼叫time中的資料成員。

友元類的設定規則:如果類a需要呼叫類b中的私有物件,就在類b中friend class a;

友元的宣告不受訪問限定符的影響,可以宣告在類中任何位置。

類b的成員函式fun依賴類a,

class a;  //forward declaration

class b;

class a;

//put b method definition here

靜態資料成員不依賴與物件例項化,故不再建構函式中初始化靜態資料成員,靜態資料成員必須進行單獨的初始化。

class tank

; #靜態成員函式

static

int m_icount; # 靜態資料成員

};int tank::m_icount = 0; #靜態資料成員必須進行單獨的初始化

靜態資料成員、靜態成員函式訪問方法

int main()

靜態成員函式無法呼叫非靜態的資料成員。

class tank

static

int getcount()

private:

int m_icode;

int m_icount;

};

運算子過載的本質就是函式過載。

一元運算子過載

-(負號)過載為例,成員函式過載:

class coordinate

; coordinate & operator-()

...}

int main()

友元函式過載:

class coordinate

...int main()

...int main()

int main()

coor3 = coor1 + coor2 //coor3 = operator+(coor1, coor2)

(<<)輸出運算子過載,第乙個引數必須為ostream,故不能進行成員函式過載。

//使用ostream需要#include using namespace std;

frind ostream &operator

<<(ostream &out, const coordinate &c);

friend ostream &operator

<<(ostream &out, const coordinate &c)

template

//,定義模板t

t max(t a, t b) //函式模板

int val = max(2, 4);

char ch = max('w', 'd'); //制定型別

template

//類似定義乙個常量

void display()

display<10>();

template

//可以混用

void display(t a, c b)

display(12, 'e');

template

//可以混合

void display(t a){for(int i=0;icout

<< a ('e');

template

void display(t a);

template

void display(t a,t b);

template

void display(t a);

《C 多型篇 imooc》筆記

多型 相同物件收到不同訊息或不同物件收到相同訊息時產生的不同動作。虛函式 shape circle,shape rect 三個類中都定義了同名的public成員函式calcarea 當定義父類指標指向堆中子類的例項後,呼叫其成員函式,將預設呼叫父類的成員函式。virtual void calcare...

《C 封裝篇(上) imooc》筆記

限定符 private protected public private是預設修飾符,protected類似於private,不同點在於繼承情況不一樣。class tv 從棧中例項化 tv tv1 tv tvarr 20 從堆中例項化 tv p new tv tv p1 new tv 20 其他操作...

C 學習筆記 類模板

c 中將泛型思想引入到了類,實現了類模板,使得類的實現不再關注資料元素的具體型別,而只關注類所需實現的功能,適用於編寫資料結構相關 c 中的類模板以相同的方式處理不同的型別,在類的宣告前使用template關鍵字標識將要泛型程式設計,用於說明類中使用的t是泛指型別,類模板只能顯式指定具體型別,無法像...