C++ 重載運算子簡單例子
我們可以重定義或重載大部分 C++ 內建的運算子。這樣,就能使用自訂類型的運算子。
重載的運算子是帶有特殊名稱的函數,函數名是由關鍵字 operator 和其後要重載的運算子符號構成的。與其他函數一樣,重載運算子有一個傳回型別和一個參數列表。
Box operator+(const Box&);
聲明加法運算子用於把兩個 Box 對象相加,返回最終的 Box 對象。大多數的重載運算子可被定義為普通的非成員函數或者被定義為類成員函數。如果我們定義上面的函數為類的非成員函數,那麼我們需要為每次操作傳遞兩個參數,如下所示:
Box operator+(const Box&, const Box&);
下面的執行個體使用成員函數示範了運算子多載的概念。如下所示:
#include <iostream>
using namespace std;
class Person{
public:
Person(int num) : age(num){}
/* 類成員函數 */
int operator+(const Person &temp){
return (this->age+temp.age);
}
int age;
};
/* 非類成員函數 */
int operator-(const Person &a, const Person &b){
return (a.age-b.age);
}
int main()
{
Person John(20), Tom(18);
cout << John+Tom << endl;
cout << John-Tom << endl;
return 0;
}
--------------------------------------------------------------------------------
可重載運算子/不可重載運算子
下面是可重載的運算子列表:
分類 |
符號 |
雙目算術運算子 |
+ (加),-(減),*(乘),/(除),% (模數) |
關係運算子 |
==(等於),!= (不等於),< (小於),> (大於>,<=(小於等於),>=(大於等於) |
邏輯運算子 |
(邏輯或),&&(邏輯與),!(邏輯非) |
單目運算子 |
+ (正),-(負),*(指標),&(取地址) |
自增自減運算子 |
++(自增),--(自減) |
位元運算符 |
(按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移) |
賦值運算子 |
=, +=, -=, *=, /= , % = , &=, ^=, <<=, >>= |
空間申請與釋放 |
new, delete, new[] , delete[] |
其他運算子 |
()(函數調用),->(成員訪問),,(逗號),(下標) |
下面是不可重載的運算子列表:
. :成員訪問運算子
.*, ->* :成員指標訪問運算子
:: :域運算子
sizeof :長度運算子
?: :條件運算子
# :預先處理符號
本文永久更新連結地址:https://www.bkjia.com/Linux/2018-02/151083.htm