操作符過載 一

2022-04-15 17:33:06 字數 3714 閱讀 5496

一,運算子過載的基礎知識

1.什麼是運算子過載

所謂的過載,就是重新賦予新的含義。函式的過載是讓乙個已經存在的函式賦予乙個新的含義,使之實現新的功能。因此,乙個函式名就可以用來代表不同功能的函式。運算子的過載其實我們已經使用過了,例如常見的"+"加法操作就是c++預設過載的,我們可以用加法對整數,單精度,雙精度的資料進行加法運算,也是乙個運算子可以有不同的功能。c++還為我們提供了自己進行運算子過載的方式。

2.運算子過載的推演

我們可以自然而然的使用「+」號對兩個整數或者浮點數進行求和運算,但是如果是複數呢,我們就不能簡單的用「+」號來進行操作,就必須要用函式來進行兩個複數的操作,下面來進行運算子過載的推演。

3.運算子過載推演**的實現

# includeusing

namespace

std;

/*定義複數類

*/class

complex

intgeta()

intgetb()

void

print()

};/*

兩個複數相加的函式

*/void add(complex& c1, complex&c2)

/*定義operator+函式

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

intmain()

4.運算子過載的推演總結

二,操作符過載程式設計基礎

1.操作符過載的兩種方法

2.二元運算子的過載

3.二元運算子兩種過載方式的實現

# includeusing

namespace

std;

/*定義複數類

*/class

complex

/*成員函式方式實現操作符(-)過載

*/complex& operator-(complex&c)

void

print()

};/*

友元函式實現操作符過載的函式實現

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

intmain()

4.一元操作符的過載

5.一元操作符過載的**實現

# includeusing

namespace

std;

class

complex

/*成員函式實現前置--運算子的過載

*/complex& operator--()

/*成員函式實現後置--運算子的過載

*/complex& operator--(int

)

void

print()

};/*

友元函式實現前置++運算子的過載

*/complex& operator++(complex&c)

/*友元函式實現後置++運算子的過載

*/complex& operator++(complex& c,int

)int

main()

6.運算子過載的實現步驟

7.友元函式的使用場景

8.友元函式實現《和》操作符的過載

# includeusing

namespace

std;

class

complex;/*

友元函式實現《和》操作符的過載

*/ostream& operator

<<(ostream& out, complex&c)

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

intmain()

三,常見操作符的過載

1.過載賦值運算子=

# define _crt_secure_no_warnings

# include

using

namespace

std;

class

name

/*有參建構函式

*/name(

char *name)

/*拷貝建構函式

*/name(

const name&n)

/*析構函式

*/ ~name()

cout

<< "

析構函式執行...

"<}

public

:

/*等號操作符過載

*/name& operator=(name&n)

this->name = new

char[strlen(n.name) + 1

]; strcpy(

this->name, n.name);

return *this

; }

};int

main()

2.過載陣列下標運算子

# includeusing

namespace

std;

class

vector

~vector()

}public

:

/*過載下標運算子

*/int& operator(int&i)

};int

main()

/*獲取元素

*/for (int i = 0; i < 10; i++)

return0;

}

3.過載函式呼叫符()

# includeusing

namespace

std;

class

string

/*析構函式

*/ ~string()

}public

:

/*過載函式呼叫符()

*/string& operator()(char *ptr)

this->ptr = new

char[strlen(ptr) + 1

]; strcpy(

this->ptr, ptr);

return *this

; }

/*過載左移運算子

*/friend ostream& operator

<<(ostream& out, string&s);

};/*

過載左移運算子

*/ostream& operator

<<(ostream& out, string&s)

intmain()

操作符過載(一)

目錄2.複數類的實現 3.賦值操作符過載和拷貝建構函式 操作符過載的本質是用特殊形式的函式擴充套件操作符的功能 在進行操作符過載時,必須遵循以下三條規則 全域性函式和成員函式都可以實現對操作符的過載,過載為全域性函式的語法規則為 sign為預定義的操作符,如 lp和rp分別為左運算元和右運算元.ty...

操作符過載

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