運算子過載 C (26 27)

2021-10-03 09:44:50 字數 1964 閱讀 1158

定義

方法

格式

函式型別 operator 運算子名稱 (形參列表)

例如: 把加號運算子過載成乘號運算子

int operator + (int a,int b)

tips

1/2 複數的加減乘除

#include

using

namespace std;

class

complex

complex operator

-(complex &in)

complex operator

*(complex &in)

complex operator

/(complex &in)

private

:double real;

double imag;};

void complex::

printf()

else

if(imag==0)

else

if(imag>0)

cout <<

"( "

<< real <<

"+"<< imag <<

"i ) "

<< endl;

else

cout <<

"( "

<< real << imag <<

"i ) "

<< endl;

}complex::

complex()

complex::

complex

(double r,

double i)

intmain()

2/2 分數的加減乘除

#include

#include

using

namespace std;

class

fenshu

fenshu operator

-(fenshu &in)

fenshu operator

*(fenshu &in)

fenshu operator

/(fenshu &in)

private

:int num;

int denum;

void

normalize()

;};fenshu::

fenshu()

fenshu::

fenshu

(int num_in,

int denum_in)

//normalize()對分數進行簡化操作包括:

//1.只允許分子為負數,如果分母為負數則把負數挪到分子部分,如1/-2==-1/2

//2.利用歐幾里德演算法(輾轉求餘原理)將分數進行簡化:2/10 => 1/5

void fenshu::

normalize()

//用歐幾里得演算法求最大公約數:a

int a=

abs(num)

;int b=

abs(denum)

;while

(b>0)

num/

=a; denum/

=a;}

void fenshu::

print()

else

if(denum==1)

else

cout << num <<

"/"<< denum << endl;

}int

main()

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

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

C 運算子過載賦值運算子

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

C 運算子過載轉換運算子

為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...