可重载运算符/不可重载运算符
下面是可重载的运算符列表:
双目算术运算符 |
+ (加),-(减),*(乘),/(除),% (取模) |
关系运算符 |
==(等于),!= (不等于),< (小于),> (大于),<=(小于等于),>=(大于等于) |
逻辑运算符 |
||(逻辑或),&&(逻辑与),!(逻辑非) |
单目运算符 |
+ (正),-(负),*(指针),&(取地址) |
自增自减运算符 |
++(自增),--(自减) |
位运算符 |
| (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移) |
赋值运算符 |
=, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>= |
空间申请与释放 |
new, delete, new[ ] , delete[] |
其他运算符 |
()(函数调用),->(成员访问),,(逗号),[](下标) |
下面是不可重载的运算符列表:
- .:成员访问运算符
- .*, ->*:成员指针访问运算符
- :::域运算符
- sizeof:长度运算符
- ?::条件运算符
- #: 预处理符号
运算符重载实例
下面提供了各种运算符重载的实例,帮助您更好地理解重载的概念。
序号 |
运算符和实例 |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
运算符重载的同时也可以发生函数重载!
#include<iostream> using namespace std; //加号运算符重载class xiMeng{public: int M_A; int M_B; //通过成员函数运算符重载 /*xiMeng operator + (xiMeng& p) { xiMeng temp; temp.M_A = this->M_A + p.M_A; temp.M_B = this->M_B + p.M_B; return temp; }*/}; //通过全局函数运算符重载 xiMeng operator+ (xiMeng& p1, xiMeng& p2){ xiMeng temp; temp.M_A = p1.M_A + p2.M_A; temp.M_B = p1.M_B + p2.M_B; return temp;} //运算符重载也可以发生函数重载 xiMeng operator+ (xiMeng& p, int num){ xiMeng temp; temp.M_A = p.M_A + num; temp.M_B = p.M_B + num; return temp;} void xiMengTest() { xiMeng p1; p1.M_A = 15; p1.M_B = 25; xiMeng p2; p2.M_A = 10; p2.M_B = 30; //通过全局函数运算符重载 xiMeng p3 = p1 + p2; cout << "p3.M_A = " << p3.M_A << endl; cout << "p3.M_B = " << p3.M_B << endl; //运算符重载也可以发生函数重载 xiMeng p4 = p1 + 100; cout << "p4.M_A = " << p4.M_A << endl; cout << "p4.M_B = " << p4.M_B << endl;} int main(){ xiMengTest(); return 0;}