一,運算子過載的基礎知識
1.什麼是運算子過載
所謂的過載,就是重新賦予新的含義。函式的過載是讓乙個已經存在的函式賦予乙個新的含義,使之實現新的功能。因此,乙個函式名就可以用來代表不同功能的函式。運算子的過載其實我們已經使用過了,例如常見的"+"加法操作就是c++預設過載的,我們可以用加法對整數,單精度,雙精度的資料進行加法運算,也是乙個運算子可以有不同的功能。c++還為我們提供了自己進行運算子過載的方式。
2.運算子過載的推演
我們可以自然而然的使用「+」號對兩個整數或者浮點數進行求和運算,但是如果是複數呢,我們就不能簡單的用「+」號來進行操作,就必須要用函式來進行兩個複數的操作,下面來進行運算子過載的推演。
3.運算子過載推演**的實現
# includeusingnamespace
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.二元運算子兩種過載方式的實現
# includeusingnamespace
std;
/*定義複數類
*/class
complex
/*成員函式方式實現操作符(-)過載
*/complex& operator-(complex&c)
void
print()
};/*
友元函式實現操作符過載的函式實現
*/complex& operator+(complex&c1, complex c2)
intmain()
4.一元操作符的過載
5.一元操作符過載的**實現
# includeusingnamespace
std;
class
complex
/*成員函式實現前置--運算子的過載
*/complex& operator--()
/*成員函式實現後置--運算子的過載
*/complex& operator--(int
)
void
print()
};/*
友元函式實現前置++運算子的過載
*/complex& operator++(complex&c)
/*友元函式實現後置++運算子的過載
*/complex& operator++(complex& c,int
)int
main()
6.運算子過載的實現步驟
7.友元函式的使用場景
8.友元函式實現《和》操作符的過載
# includeusingnamespace
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.過載陣列下標運算子
# includeusingnamespace
std;
class
vector
~vector()
}public
:
/*過載下標運算子
*/int& operator(int&i)
};int
main()
/*獲取元素
*/for (int i = 0; i < 10; i++)
return0;
}
3.過載函式呼叫符()
# includeusingnamespace
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...