054day(友元和運算過載符的基本概念)

2021-08-11 18:18:23 字數 979 閱讀 3699

172210704111-陳國佳總結《2023年12月3日》【連續054】

內容:a.友元(friends):

1)友元函式:乙個類的友元函式可以訪問該類的私有成員。

class a;

class b;

class a

int mod2(a a)

全域性函式或乙個類的成員函式(包括構造,析構函式)說明另乙個類的友元。

2)友元類:如果a是b的友元類,那麼a的成員函式可以訪問b的私有成員。

class a;

友元類的關係無法傳遞(朋友的朋友不是朋友),無法繼承;

b.運算子過載的基本概念:

為了實現物件之間的運算,c++可以擴充套件運算子的試用範圍;

其實質是函式過載:

把含運算子的表示式轉換成對運算子函式的呼叫,運算元換成函式引數;

返回值型別   operator 運算子 (形參表)

例:class complex

complex operator-(const complex&c);

};complex operator+(const complex & a,const complex &b)

complex complex::operator-(const complex & c)

/*  過載為成員函式時,引數個數為運算子目數減一。

過載為普通函式時,引數個數為運算子數目  */

int main()

c.翻了下書,看到了過載限制:

1.過載後的運算子必須至少有乙個運算元是使用者定義的型別;

2.過載後的運算子與原來的句法規矩一致,且優先順序相同;

3.不能創造新運算子;

4.不能過載:sizeof  .   .*   ::   ?:  typeid  const_cast reinterpret_cast   static_cast

5.只能通過成員函式過載: =  ()    ->

明日計畫:賦值運算子的過載;

友元和運算子過載

友元分為友元函式和友元類兩種 1.友元函式。乙個類的友元函式可以訪問該類的私有成員 2.友元類。若a是b的友元類,則a的成員函式可以訪問b的私有成員 運算子過載 就是對已有的運算子 c 中預定義的運算子 賦予多重的含義,使同一運算子作用於不同型別的資料時導致不同型別的行為 目的 擴充套件c 中提供的...

友元運算子過載

運算子就是一種特殊的函式 運算子過載可以是普通函式 const money operator const money a1,const money a2 可以是成員函式 const money operator const money a2 const 當二元運算子作為成員函式進行過載時,只有乙個引...

友元函式和運算子過載

友元函式 class a void myprint 友元函式的實現,在友元函式中可以訪問私有的屬性 void modify i a p,int a void main 友元類 class a void myprint class b private a a 運算子過載 class point voi...