C 運算子過載 二

2021-07-05 04:30:18 字數 1378 閱讀 6091

友元函式實現複數加法

運算子過載實現思路:成員函式和友元函式,兩種區別在於:

1.成員函式具有this指標,友元函式沒有

2.傳遞引數不同,實現**不同,應用場合也不同

兩者相同點是:運算子的使用方法一樣

#include 

using

namespace

std;

class complex

complex(int real,int imag)

~complex()

friend complex operator+(complex & a, complex & b)

void printfun()

private:

int real_;

int imag_;

};void main()

友元函式實現運算子過載

友元函式實現*的demo

1.operator*()

2.operator*(complex& a,complex& b);

3.complex operator*(complex& a,complex& b);

4.函式實現

complex operator*(complex& a,complex& b)

注:這裡要想操作類的私有成員變數,需要將此函式變為友元函式,加上關鍵字friend 即可

成員函式實現運算子過載

1.c1.operator*(c2);//成員函式的呼叫需要物件,提取出乙個引數

2.complex operator*(complex &c)

總結:二元運算子乙個引數可以通過this指標隱含實現

一元運算子過載

前置++ 友元函式實現

1.operator++

2.operator++(int right);

3.complex& operator ++(complex &right)

前置++ 成員函式實現

1.1.operator++

2.obj.operator++();

3.complex& operator ++()

後置–友元函式實現

1.operator–(complex &c);

2.complex operator–(complex &c);//先返回再–,所以這裡需要臨時變數儲存–之前的內容

3.friend complex operator–(complex &c,int)

後置–成員函式實現

1.operator–;

2.obj.operator–();

3.complex operator–(int)

C 之運算子過載(二)

過載 自增 運算子 include using namespace std class myinteger 過載前置運算子 myinteger operator 過載後置運算子 佔位引數int表示過載後置遞增 myinteger operator int 過載 運算子 ostream operato...

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...