c++怎么重载才能通过下标赋值
时间: 2024-02-25 22:55:04 浏览: 10
要在 C++ 中通过下标赋值,需要重载下标运算符 []。下面是一个示例代码:
```c++
class MyClass {
public:
int& operator[](int index) {
return arr[index];
}
private:
int arr[10];
};
```
上面的代码中,重载了下标运算符 [],并返回了数组中对应下标的元素的引用,这样就可以通过下标赋值了。例如:
```c++
MyClass obj;
obj[0] = 10;
```
上面的代码将对象 obj 中下标为 0 的元素赋值为 10。
相关问题
c++下标运算符重载
C语言不允许将下标运算符函数作为外部函数来定义,它只能是非静态的成员函数。下标运算符的一般形式为T1 T::operator[](T2),其中T是定义下标运算符的类,T2表示下标,它可以是任意类型,T1是数组运算的结果。为了能对数组赋值,一般将T1声明为引用形式。下面是一个简单的例子:
```c++
class Array {
public:
int& operator[](int index) {
return arr[index];
}
private:
int arr = 1; // 使用下标运算符重载给数组元素赋值
int value = a
c++ 重载操作符有那些
重载操作符是指重新定义C++中已有运算符的含义。常见的重载操作符有:
1. 算术运算符: +, -, *, /, %
2. 关系运算符: ==, !=, >, <, >=, <=
3. 逻辑运算符: &&, ||, !
4. 赋值运算符: =
5. 位运算符: &, |, ^, ~, <<, >>
6. 自增/自减运算符: ++, --
7. 成员访问运算符: ->, .
8. 下标运算符: [ ]
9. 函数调用运算符: ( )
10. 转型运算符: (type)
11. new 和 delete 运算符: new, delete, new[], delete[]
另外还有三个特殊的运算符是可以被重载的:
1. 复合赋值运算符: +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
2. 串联运算符: <<, >>
3. 逗号运算符: ,
需要注意的是所有运算符重载都需要在类内部进行,且实现的时候可能需要使用特殊的关键字来实现,如 friend 和 operator.
相关推荐
![xmind](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)