成員函式和友元函式的選擇方案指導原則

2021-06-18 10:15:30 字數 699 閱讀 6414

成員函式和非成員函式 ( 友元函式 ) 選擇方案 

通常對類本身的操作 ,( 如賦值 =, 下標 , 呼叫 (), 成員訪問符 ->, 自增 ++, 自減 --) 請選擇成員函式 

通常對兩個物件進行操作 ,( 如算術操作 , 位操作符 , 關係操作 , 輸入輸出 ) 請選擇非成員函式 , 就是用友元函式實現 

成員 / 非成員函式過載選擇指導 

一元操作符就是操作符有乙個物件 , 如 x++,y-- 等 , 通常以類的成員函式實現過載 

二元操作符就是操作符有二個物件 , 如 x+y,x-y 等 , 通常以類的友元函式實現過載 

以上規則是乙個建議,其實兩種方式都可以實現,如下所示。注意,如果乙個函式有friend修飾,那麼它在public還是private域限制都失效了,因為這個函式是friend。以下面的例子為例,friend bool operator ==() 可以移到private域,不影響使用。如果同時定義了友元函式和成員函式,那麼vs2010編譯器預設呼叫的是成員函式的版本if (a == b) ,除非顯式調用友元函式版本,比如 if( operator == (a, b))

class aaa

;bool operator == (const aaa &left, const aaa &right)

bool aaa::operator == (const aaa &a)

友元函式和友元成員函式

include using namespace std class boy 提前宣告,否則下面的函式宣告沒有辦法定義 class girl girl void print void girl boy x 此定義必不可少 class boy boy void print friend void gir...

友元 友元函式 友元類和友元成員函式 C

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

友元 友元函式 友元類和友元成員函式 C

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