C 運算子過載總結及複數類實現

2021-10-09 07:18:03 字數 2786 閱讀 1868

c++ 預定義中的運算子的操作物件只侷限於基本的內建資料型別,但是對於我們自定義的型別(類)是沒有辦法操作的。但是大多時候我們需要對我們定義的型別進行類似的運算,這個時候就需要我們對這麼運算子進行重新定義,賦予其新的功能,以滿足自身的需求。

運算子過載的實質就是函式過載或函式多型。運算子過載是一種形式的 c++ 多型。目的在於讓人能夠用同名的函式來完成不同的基本操作。要過載運算子,需要使用被稱為運算子函式的特殊函式形式,運算子函式形式:operator p(argument-list)//operator後面的p為要過載的運算子符號。

不可以過載的運算子列表:

過載運算子函式特性:

類成員函式

友元函式

++, --的前置過載和後置過載

後置過載需要加佔位引數int

過載<<的鏈式規則

只能過載為非成員函式

注意點:

一般來說,單目運算子過載為類的成員函式,雙目運算子過載為友元函式

雙目運算子不能將=, (), ,->過載為類的友元函式

如果運算子的第一次運算元要求為隱式型別轉換則必須為友元函式

友元函式過載運算常用於運算子的左右運算元型別不同的情況

// complex.h

#pragma once

#include

using

namespace std;

class

complex

// 拷貝建構函式

complex

(const complex& obj):re

(obj.re),im

(obj.im)

// 析構函式

~complex()

// +

complex operator+(

const complex&);

// -

complex operator

-(complex&);

// +=

complex&

operator+=

(complex&);

// -=

complex&

operator-=

(complex&);

// ==

bool

operator

==(complex&);

// 前置 --

complex&

operator--(

);// 前置 ++

complex&

operator++(

);// 後置 --

complex operator--(

int)

;// 後置 ++

complex operator++(

int)

;// <<

friend ostream&

operator

<<

(ostream& out,

const complex& obj)

;double

real()

const

double

imag()

const

private

:double re, im;

};

// complex.cpp

#include

"complex.h"

ostream&

operator

<<

(ostream& out,

const complex& obj)

complex complex::

operator+(

const complex & obj)

complex complex::

operator

-(complex &obj)

complex & complex::

operator+=

(complex &obj)

complex & complex::

operator-=

(complex &obj)

bool complex::

operator

==(complex &obj)

complex & complex::

operator--(

)complex & complex::

operator++(

)complex complex::

operator--(

int)

complex complex::

operator++(

int)

// main.cpp

#include

#include

"complex.h"

using

namespace std;

intmain()

輸出結果:

(0, 0) (2, -3)

(2, -3)

(4, -6)

(2, -3)

1(3, -2)

(3, -2) (4, -1)

4, -1

請按任意鍵繼續. . .

C 複數類運算子過載

實現運算子過載有兩種形式 過載為成員函式 過載為友元函式。includeusing namespace std class complex complex double r,double i complex const complex rhs complex operator const compl...

C 運算子過載,複數類

複數類 ccomplex c 的運算子過載 使物件的運算表現的和編譯器內建型別一樣。include using namespace std class ccomplex ccomplex operator const ccomplex src void show 運算子的過載 operator 前置...

運算子過載 複數類

1.普通運算子可以過載 2.型別過載1 防止實參被修改 2 接收隱式生成臨時物件 類內是this call的呼叫約定,成員方法隱藏this指標,指向一般為左運算元,所以只用傳右運算元即可 如下 class ccomplex 構造類內實現 的過載 右運算元型別為intconst ccomplex op...