4 4 操作符過載

2021-08-17 08:43:17 字數 2867 閱讀 2188

//+加號操作符過載

#include

using namespace std;

class complex

void printcomplex()

//friend complex operator+(complex &c1,complex &c2);

//寫為成員函式

complex operator+(complex &another)

private:

int a;//實數

int b;//虛數

};#if 0

//操作符過載寫在全域性

// operator+ 中間不能有空格,這倆構成乙個函式名

complex operator+(complex &c1,complex &c2)

#endif

int main()

#include

using

namespace

std;

class complex

void printcomplex()

//friend complex & operator++(complex &c);

//friend const complex operator++(complex &c1,int);

//寫到區域性

complex & operator++()//自己調自己,不用傳參

const complex operator++(int)//使用佔位符(亞元)

private:

int a;//實數

int b;//虛數

};#if 0

//寫在全域性

//過載的是前++

//要遵循前++規則:先加後用,可以當左值

complex & operator++(complex &c)

//過載的是後++運算子

//要遵循後++規則:先用後加,且不能當左值(加const修飾)

const complex operator++(complex &c1,int)//使用佔位符(亞元),形成過載

//「<>」操作符過載只能寫在全域性,不能寫在成員方法中,否則呼叫的順序會變反:c1

<

#endif

private:

int a;

int b;

};#if 1

//《過載只能寫在全域性

ostream & operator

<

#endif

//同樣》過載只能寫在全域性

istream & operator>>(istream & is,complex &c)

int main()

operator操作符, 中間不能有空格,如operator+,這倆構成乙個函式名。

在引數不能形成差別產生過載時,可以使用佔位符(亞元),形成過載。

「<>」操作符過載只能寫在全域性,不能寫在成員方法中,否則呼叫的順序會變反。

在這裡補一下++i與i++的知識:

如果只是看i++和++i,這兩個是等價的,都等同於i=i+1,都是變數自身加1。

前++規則:先加後用,可以當左值。

後++規則:先用後加,且不能當左值

在程式開發中,++i 與 i++的區別在**?

(1)如果只是看i++和++i,這兩個是等價的,都等同於i=i+1,都是變數自身加1。

(2)在一般情況下,它們都是跟賦值聯絡在一起。

比如:

int a;

a=i++;//將i的值賦值給a,即a=i;然後再執行i=i+1;

也就是【a=i++;】與【a=i; i=i+1;】等價。

a=++i;//將i+1的值賦給a,即a=i+1;然後再執行i=i+1;

也就是【a=++i;】與【a=i+1;i=i+1;】等價。

(3)【總結一下】

①前++是將自身加1的值賦值給新變數,同時自身也加1;

②後++是將自身的值賦給新變數,然後才自身加1.

(4)++i可以作為左值,i++ 不能作為左值。

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

操作符過載

1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...

過載操作符

1.過載操作符1.1 限制過載操作符具有以下限制 1 只有c 預定義的操作符集中的操作符才可以被過載 2 對於內建型別的操作符,它的預定義不能被改變,應不能為內建型別過載操作符,如,不能改變int型的操作符 的含義 3 也不能為內建的資料型別定義其它的操作符 4 只能過載類型別或列舉型別的操作符 5...