過載運算子友元函式不能訪問私有成員 解決方法

2021-10-05 16:13:25 字數 553 閱讀 8183

在類宣告裡實現友元函式

#include

using

namespace std;

class

point

friend

operator

+(point a,point b)};

intmain()

輸出6

編寫私有成員的外部介面

#include

using

namespace std;

class

point

intget_a()

;//私有成員a的外部介面

friend

intoperator

+(point a,point b);}

;int

operator

+(point a,point b)

intmain()

輸出 6

以上兩種方法是比較方便和可行的,當然還有其他方法了,這裡就暫時不討論了。

過載運算子以及友元函式

在自己已經創造好的類中如果想更加簡化一些運算,比如之前兩個類中的物件如果想要相加必須通過類成員函式來實現,現在假設之前建立好的time類中的兩個物件 time a time b timec c a b 如果想實現上述運算,就要求過載運算子 利用關鍵字operator來實現。首先在標頭檔案中就要宣告過...

c 過載運算子 友元函式

運算子的過載使得我們可以更加方便的使用常見的運算子進行操作。過載運算子的函式格式如下 operatorop argement list 接下來的例子中,我們將定義乙個time類,並通過過載運算子 和 來實現時間的加法和輸出顯示,其中會使用友元函式 friend ifndef time h defin...

成員函式過載運算子和友元函式過載運算子的比較

1.對雙目 運算子而言,成員 函式過載 運算子的函式引數表中只有乙個引數,而用友元函式過載運算子函式引數表中含有兩個引數。對單木運算子來說,成員函式過載運算子的函式引數表中沒有引數,而用友元函式過載運算子函式引數表中含有乙個函式。這個問題要搞清楚,有乙個this 指標的問題。2.雙目運算子一般可以用...