int arr[10] = { 0 };

arr[0] = 6;

char str[100] = "";

str[0] = '8';

凡是接触过编程的所有人都接触过这种写法吧。

学习过C++的同学可能都接触过运算符重载,不知道教材或者导师有没有提过[]下标运算符的重载。

有的是当做单目运算符教的,理由是[]中间只有那么一个操作数,那么真的是这样吗?

我们来尝试写一写[]运算符重载的声明:

返回类型 &operator(const int 参数1);

乍一看不就一个操作数吗,那么这我们写一个友元全局版的:

friend 返回类型 &operator(类名 参数1, const int 参数2);

这就变成两个操作数了。那不写第一个参数可以吗,当然不行了,除非这个对象是静态的,你可以在函数内使用指针找到他,如果是全局变量则直接写它的标识符进行使用(其实还是两个操作数)。如果你别的什么也不用只用这个int参数,那你面对这个参数将一脸茫然,不知所措。

所以[]就是双目运算符了?正确答案是:一定不是单目运算符,在重载时可以看作它是个双目运算符,但不是真正意义上的双目运算符。使用[]下标运算符最重要的用途是用来索引,通常目的是找出一片空间其中特定的一小块空间,这小块空间也不一定是有作为“值”的意义,如:

int arr[10][5];

int arr[2]就是arr这块大空间中的一小块空间,一般来说这小块空间的值是没有意义的。

C++是把它归类于其他运算符(或者说后缀)的,重载时,可以看作双目运算符来进行重载。

下标运算符究竟是单目运算符还是双目运算符相关推荐

  1. 如何单目运算符和双目运算符以及三目运算符

    1.单目运算符: 单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!.按位取反运算符:~.自增自减运算符:++, –等. 逻辑非运算符[!].按位取反运算符[~].自增自 ...

  2. 单目运算符、双目运算符、三目运算符

    单目运算符是什么 单目运算符是指运算所需变量为一个的运算符 又叫一元运算符,其中有逻辑非运算符:!.按位取 反运算符:~.自增自减运算符:++,-等. 逻辑非运算符[!].按位取反运算符[~]. 自增 ...

  3. C++双目/单目运算符的重载

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105148178 双 ...

  4. c#中重载单目运算符-_C#程序重载二进制运算符(-,*,/)

    c#中重载单目运算符- Here, we will design overloaded methods for binary operators: minus, multiply and divide ...

  5. C++单目运算符的重载与双目运算符的重载【案例】

    文章目录 一.单目运算符的重载 二.双目运算符的重载,使其能运算字符串的> < == 一.单目运算符的重载 #include <iostream> using namespac ...

  6. C语言单目运算符和双目运算符、三目运算符

    C语言中运算符分为单目,双目和三目 顾名思义,就是运算符的操作数的个数 单目就是一个操作数,比如++,a++,操作数只有一个a 双目就是两个操作数,最熟悉的就是+,a+b,计算a.b的和 三目就是三个 ...

  7. 你所不知道的运算符- 单目运算符

    运算符 运算符分为: 算数运算符, 关系运算符 , 逻辑运算符.这些都是知道的吧,小编要说的是你所不知道的运算符.单目运算符.双目运算符.以及三目运算符 单目运算符 单目运算符是指只接受一个操作数的操 ...

  8. Java运算符使用、单目、二目运算符、数据类型精度运算问题等

    前言:   Java提供了丰富的运算符,例如算术运算符.关系运算符.逻辑运算符.位运算符等:      其中又分有单目运算符和二目运算符: 一.单目运算符:只对单独一个操作元(变量)进行操作: --- ...

  9. 单目运算符和双目运算符

    运算符分为单目,双目和三目 顾名思义,就是运算符的操作数的个数 单目就是一个操作数,比如++,a++,操作数只有一个a,写成a++b是非法的. 双目就是两个操作数,最熟悉的就是+,a+b,计算ab的和 ...

最新文章

  1. 盘点2013年那些最优秀的网页设计作品【系列五】
  2. 为网站加入Drupal星球制作RSS订阅源
  3. 检查用户是否有权限从ABAP里调用C kernel functions
  4. 5g虚拟技术旅游_5G赋能VR产业变革
  5. [JZOJ5863] 【NOIP2018模拟9.11】移动光标
  6. 群里有朋友关于SAP Spartacus的疑问
  7. 【Python】我的第一个EXE程序
  8. AI算力霸主诞生!英伟达发布首款安培架构GPU,性能提升20倍
  9. 数据科学:Oracle 并购 DataScience 公司提升机器学习能力
  10. html获取location,通过定义JS窗口对象获取url地址location.search部分的参数值
  11. python类型转换astype-python中numpy数据类型转换的方法
  12. c语言程序设计谭浩强题库,谭浩强c语言程序设计习题答案
  13. Nginx从入门到入坟(九)- Nginx静态资源如何防盗链
  14. 【企业微信点餐系统】
  15. java 集合对象转map的几种方式(stream流)
  16. win10如何调整计算机时间同步,win10电脑时间与Internet同步的设置方法
  17. Linux网络流量监控
  18. 使用telnet登录数据库服务器
  19. 【WPS】未安装VBA支持库,无法运行文档中的宏。如需要启用宏功能,请点击这里了解详情。
  20. 一百行代码实现的HTML5登录页面

热门文章

  1. jq获取页面中所有的a链接并执行下载功能
  2. 自动化立体库抗震解决方案
  3. c 语言代替字母,【c语言】将“China”译成密码,密码规律:用原来字母后边第4个字母代替原来的字母。...
  4. 【详解Vue中请求拦截器】
  5. 计算机监控系统应用前景和发展趋势,计算机控制技术的现状及发展趋势
  6. 跟着小梅哥初学FPGA ,vivdao开发平台,二选一多路选择器。
  7. Leetcode-滑窗/差分数组-995. K 连续位的最小翻转次数
  8. PSINS开源代码初体验——航迹仿真与组合导航
  9. ESP32-总体理解
  10. vue eslint 自动修复