operator[]如何重载
时间: 2023-10-23 18:11:00 浏览: 60
重载 operator[] 运算符的语法如下:
```
返回值类型 &operator[](参数列表)
{
// 实现代码
}
```
其中,返回值类型表示重载后运算符的返回值类型,& 表示返回一个引用,参数列表表示重载运算符时传入的参数。
例如,我们可以重载一个类的 operator[] 运算符,使其可以像数组一样访问对象的成员变量:
```cpp
class MyClass
{
public:
int arr[5];
int &operator[](int index)
{
return arr[index];
}
};
int main()
{
MyClass obj;
obj[0] = 1;
obj[1] = 2;
obj[2] = 3;
obj[3] = 4;
obj[4] = 5;
for (int i = 0; i < 5; i++)
{
cout << obj[i] << " ";
}
return 0;
}
```
输出结果为:1 2 3 4 5。
相关问题
c++ operator 重载
C++ 允许程序员对大多数运算符进行重载,以便在特定的类或数据类型上定义自定义行为。这种重载运算符的过程称为运算符重载。
C++ 中重载运算符的语法如下:
```c++
<return_type> operator<operator_symbol>(<arguments>)
{
// code to define the behavior of the overloaded operator
}
```
其中,`return_type` 是重载运算符的返回类型,`operator_symbol` 是要重载的运算符,`arguments` 是运算符要操作的参数。
例如,下面是一个重载加法运算符 `+` 的例子:
```c++
#include <iostream>
using namespace std;
class MyNumber {
int num;
public:
MyNumber(int n) { num = n; }
MyNumber operator+(MyNumber &obj) {
MyNumber res(0);
res.num = num + obj.num;
return res;
}
int getNum() { return num; }
};
int main() {
MyNumber a(2), b(3), c(0);
c = a + b;
cout << "a: " << a.getNum() << endl;
cout << "b: " << b.getNum() << endl;
cout << "c: " << c.getNum() << endl;
return 0;
}
```
输出结果为:
```
a: 2
b: 3
c: 5
```
在上面的示例中,我们自定义了一个 `MyNumber` 类,它包含一个整数 `num` 和一个重载了加法运算符 `+` 的函数。当我们执行 `c = a + b;` 时,编译器会自动调用 `a` 对象的 `operator+()` 函数,并将 `b` 对象作为参数传递给它。函数将 `a` 和 `b` 对象的 `num` 相加,并将结果存储在一个新的 `MyNumber` 对象 `res` 中,然后返回该对象。最后,将 `res` 赋值给 `c` 对象。
c++ operator 重载 语法
C++中的运算符重载语法如下:
```c++
返回类型 operator 运算符符号 (参数列表) {
// 运算符重载的实现
}
```
其中,`operator`是C++中的关键字,用于指示运算符重载函数;`运算符符号`是要重载的运算符符号,例如`+`、`-`、`*`、`/`等;`参数列表`是运算符重载函数的参数,可以是0个或多个参数;`返回类型`是运算符重载函数的返回类型。
例如,重载加法运算符`+`,实现两个`MyClass`对象相加的功能:
```c++
class MyClass {
public:
int value;
MyClass operator+(const MyClass& other) {
MyClass result;
result.value = this->value + other.value;
return result;
}
};
int main() {
MyClass a, b;
a.value = 1;
b.value = 2;
MyClass c = a + b;
cout << c.value; // 输出3
return 0;
}
```
在上面的例子中,重载了`+`运算符,实现了两个`MyClass`对象相加的功能。运算符重载函数的参数列表中,`const MyClass& other`表示另一个`MyClass`对象的引用。函数体中,首先创建了一个新的`MyClass`对象`result`,然后将当前对象和另一个对象的`value`值相加,将结果赋值给`result`对象的`value`成员变量。最后,将`result`对象返回。在`main`函数中,创建了两个`MyClass`对象`a`和`b`,并分别给它们的`value`成员变量赋值为1和2。然后,将`a`和`b`相加,将结果赋值给`c`,最后输出`c`的`value`成员变量,输出结果为3。