友元全域性函式:
//全域性函式
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是泛指型別,類模板只能顯式指定具體型別,無法像...