C++中的运算符都可以作为什么函数重载
时间: 2024-03-27 21:36:10 浏览: 9
在C++中,几乎所有的运算符都可以被重载为成员函数或非成员函数。下面是可以被重载和其对应的重载函数的形式:
1. 算术运算符:
```cpp
// 类成员函数形式
T operator+(const T& obj) const;
T operator-(const T& obj) const;
T operator*(const T& obj) const;
T operator/(const T& obj) const;
T operator%(const T& obj) const;
// 非成员函数形式
T operator+(const T& obj1, const T& obj2);
T operator-(const T& obj1, const T& obj2);
T operator*(const T& obj1, const T& obj2);
T operator/(const T& obj1, const T& obj2);
T operator%(const T& obj1, const T& obj2);
```
2. 关系运算符:
```cpp
// 类成员函数形式
bool operator==(const T& obj) const;
bool operator!=(const T& obj) const;
bool operator<(const T& obj) const;
bool operator>(const T& obj) const;
bool operator<=(const T& obj) const;
bool operator>=(const T& obj) const;
// 非成员函数形式
bool operator==(const T& obj1, const T& obj2);
bool operator!=(const T& obj1, const T& obj2);
bool operator<(const T& obj1, const T& obj2);
bool operator>(const T& obj1, const T& obj2);
bool operator<=(const T& obj1, const T& obj2);
bool operator>=(const T& obj1, const T& obj2);
```
3. 赋值运算符:
```cpp
// 类成员函数形式
T& operator=(const T& obj);
// 非成员函数形式
T& operator=(T& obj1, const T& obj2);
```
4. 自增/自减运算符:
```cpp
// 类成员函数形式
T& operator++();
T& operator--();
T operator++(int);
T operator--(int);
// 非成员函数形式
T& operator++(T& obj);
T& operator--(T& obj);
T operator++(T& obj, int);
T operator--(T& obj, int);
```
5. 成员访问运算符:
```cpp
// 类成员函数形式
T& operator[](int index);
const T& operator[](int index) const;
// 非成员函数形式
T& operator[](T& obj, int index);
const T& operator[](const T& obj, int index);
```
6. 函数调用运算符:
```cpp
// 类成员函数形式
T operator()(args...);
// 非成员函数形式
T operator()(T& obj, args...);
```
7. 类型转换运算符:
```cpp
// 类成员函数形式
operator type();
// 非成员函数形式
operator type(T& obj);
```
其中,`T` 表示类名或类型名,`args` 表示参数列表,`type` 表示目标类型。可以根据需要选择合适的重载函数的形式进行重载。