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...