友元函式 友元類

2021-09-06 10:09:25 字數 3851 閱讀 9143

友元函式:

注意:  友元函式不要在類的內部定義,不然編譯不會通過

例子:

友元函式(內部定義):

view code 

class

point

friend

void getxy(point &a)

private

:

double

x, y;

};

元函式(內外部定義):

view code 

class

point

friend

void getxy(point &a);

private

:

double

x, y;

}; void getxy(point &a)

友元成員函式:

view code 

class date; //

對 date 類的向前宣告

class time //

定義 time 類;

class

date

; time::time(

int h,int m,int s) //

定義 time 類的建構函式

void time::display(date&d) //

display 函式的作用是輸出年、月、日和時、分、秒

date::date(

int m,int d,int y) //

定義 date 類的建構函式 /*

請注意本程式的主函式中調用友元函式訪問有關類的私有資料的方法:

1、在函式名 display 的前面要加 display 所在的物件名(t1);

2、display 成員函式的實參是 date 類物件 d1,否則就不能訪問 d1 中的私有資料;

3、在 time::display 函式中引用 date 類私有資料時必須加上物件名,如 d.month 。

*/

虛函式:

工作原理:

純虛函式:

虛函式使用總結

例子: 虛函式:

view code 

class a //

有虛函式的基類

//用虛函式宣告 show 函式};

class b:publica

}; class c //

沒有虛函式的基類

}; class d:publicc

}; void

func( )

/************************************

呼叫 func 函式後的輸出結果:

這是派生類 b !

這是基類 c !

***********************************

*/

純虛函式:

view code 

class a //

有純虛函式的基類;

//要注意的是如果類有純虛函式那麼這個類無法產生例項,並且純虛函式的必須在其的派生類中實現

class b:public

a ;

利用虛函式/純虛函式,打破子類訪問許可權.例子如下:

view code 

#include

#include

using

namespace

std;

classa};

class b:public

aprotected

:

void output2()

};void

main()

成員函式屬性:

函式    

成員還是友員 

建構函式     ×        成員      √       ×        ×

析構函式     ×        成員      √       √        ×

=         ×        成員      √         √        √

&       √        任意      √       √        √

轉換函式    √       成員      ×        √        ×

()       √       成員       ×         √        √

[ ]      √       成員       ×       √        √

→       √       成員       ×       √        √

op =       √       任意       ×       √        √

new      √       靜態成員     ×       ×        void *

delete     √       靜態成員     ×       ×        void

其他操作符   √       任意       ×         √       √

其他成員    √       成員       ×       √       √

友元      ×       友員       ×         ×       √

友元類:

宣告:在類中用 friend class 友元類名;

作用:在友元類的所有成員函式都可以訪問此類中的所有資料

格式:

特點:例子:

使用友元類:

view code 

class b; //

友元類的向前宣告

class a //

擁有友元類的類的定義

friend b;

}; class b //

友元類的定義

};

多個類包含乙個友元類:

view code 

class c; //

友元類的向前宣告

class a //

擁有友元類的類的定義

friend c;

}; class b //

擁有友元類的類的定義

friend c;

}; class c //

友元類的定義

}; void

func()

乙個類包含多個個友元類:

view code 

class b; //

友元類向前宣告

class c; //

友元類向前宣告

class a //

擁有友元類的定義

friend c;

friend b;

}; class b //

友元類的定義

}; class c //

友元類的定義

}; void

func()

友元(友元函式 友元類 類成員函式的友元)

friend 友元機制 允許乙個類將對其非公有成員的訪問許可權授予指定的函式或者類。我們可以將友元大致分為3類 友元函式 是指某些雖然不是類的成員函式,但是能夠訪問這個類的所有成員的函式。比如我們下列的 include class test friend void show test rhs 宣告 ...

友元函式 友元類 友元成員

友元 友元函式 友元類和友元成員函式 c 有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以fr...

友元函式 友元類

friend class 1 友元函式 2 友元類 友元函式與友元類。c 中以關鍵字friend宣告友元關係。友元可以訪問與其有friend關係的 類中的私有成員。友元包括友元函式和友元類。1 友元函式 如果在本類以外的其它地方定義了乙個函式 這個函式可以是不屬於任何類的非成員函式,也可以是其它類的...