如何重载运算符支持对象的写操作
时间: 2024-06-11 13:10:52 浏览: 4
要重载运算符支持对象的写操作,需要使用成员函数形式的运算符重载。下面是一个例子,演示如何重载运算符[]来支持对象的写操作:
```cpp
#include <iostream>
class Array {
public:
Array(int size) {
m_size = size;
m_data = new int[size];
}
~Array() {
delete[] m_data;
}
// 重载运算符[],支持对象的读操作
int operator[](int index) const {
return m_data[index];
}
// 重载运算符[],支持对象的写操作
int& operator[](int index) {
return m_data[index];
}
private:
int m_size;
int* m_data;
};
int main() {
Array a(5);
// 对象的写操作
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
// 对象的读操作
for (int i = 0; i < 5; i++) {
std::cout << a[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
在上面的例子中,重载了运算符[],使它支持对象的写操作。在重载运算符[]时,需要注意:
1. 运算符[]的返回值需要是引用类型,否则无法进行赋值操作。
2. 重载运算符[]时需要提供两个版本,一个是const成员函数版本,用于支持对象的读操作;另一个是非const成员函数版本,用于支持对象的写操作。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)