下标运算符究竟是单目运算符还是双目运算符
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.单目运算符: 单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!.按位取反运算符:~.自增自减运算符:++, –等. 逻辑非运算符[!].按位取反运算符[~].自增自 ...
- 单目运算符、双目运算符、三目运算符
单目运算符是什么 单目运算符是指运算所需变量为一个的运算符 又叫一元运算符,其中有逻辑非运算符:!.按位取 反运算符:~.自增自减运算符:++,-等. 逻辑非运算符[!].按位取反运算符[~]. 自增 ...
- C++双目/单目运算符的重载
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105148178 双 ...
- c#中重载单目运算符-_C#程序重载二进制运算符(-,*,/)
c#中重载单目运算符- Here, we will design overloaded methods for binary operators: minus, multiply and divide ...
- C++单目运算符的重载与双目运算符的重载【案例】
文章目录 一.单目运算符的重载 二.双目运算符的重载,使其能运算字符串的> < == 一.单目运算符的重载 #include <iostream> using namespac ...
- C语言单目运算符和双目运算符、三目运算符
C语言中运算符分为单目,双目和三目 顾名思义,就是运算符的操作数的个数 单目就是一个操作数,比如++,a++,操作数只有一个a 双目就是两个操作数,最熟悉的就是+,a+b,计算a.b的和 三目就是三个 ...
- 你所不知道的运算符- 单目运算符
运算符 运算符分为: 算数运算符, 关系运算符 , 逻辑运算符.这些都是知道的吧,小编要说的是你所不知道的运算符.单目运算符.双目运算符.以及三目运算符 单目运算符 单目运算符是指只接受一个操作数的操 ...
- Java运算符使用、单目、二目运算符、数据类型精度运算问题等
前言: Java提供了丰富的运算符,例如算术运算符.关系运算符.逻辑运算符.位运算符等: 其中又分有单目运算符和二目运算符: 一.单目运算符:只对单独一个操作元(变量)进行操作: --- ...
- 单目运算符和双目运算符
运算符分为单目,双目和三目 顾名思义,就是运算符的操作数的个数 单目就是一个操作数,比如++,a++,操作数只有一个a,写成a++b是非法的. 双目就是两个操作数,最熟悉的就是+,a+b,计算ab的和 ...
最新文章
- 盘点2013年那些最优秀的网页设计作品【系列五】
- 为网站加入Drupal星球制作RSS订阅源
- 检查用户是否有权限从ABAP里调用C kernel functions
- 5g虚拟技术旅游_5G赋能VR产业变革
- [JZOJ5863] 【NOIP2018模拟9.11】移动光标
- 群里有朋友关于SAP Spartacus的疑问
- 【Python】我的第一个EXE程序
- AI算力霸主诞生!英伟达发布首款安培架构GPU,性能提升20倍
- 数据科学:Oracle 并购 DataScience 公司提升机器学习能力
- html获取location,通过定义JS窗口对象获取url地址location.search部分的参数值
- python类型转换astype-python中numpy数据类型转换的方法
- c语言程序设计谭浩强题库,谭浩强c语言程序设计习题答案
- Nginx从入门到入坟(九)- Nginx静态资源如何防盗链
- 【企业微信点餐系统】
- java 集合对象转map的几种方式(stream流)
- win10如何调整计算机时间同步,win10电脑时间与Internet同步的设置方法
- Linux网络流量监控
- 使用telnet登录数据库服务器
- 【WPS】未安装VBA支持库,无法运行文档中的宏。如需要启用宏功能,请点击这里了解详情。
- 一百行代码实现的HTML5登录页面
热门文章
- jq获取页面中所有的a链接并执行下载功能
- 自动化立体库抗震解决方案
- c 语言代替字母,【c语言】将“China”译成密码,密码规律:用原来字母后边第4个字母代替原来的字母。...
- 【详解Vue中请求拦截器】
- 计算机监控系统应用前景和发展趋势,计算机控制技术的现状及发展趋势
- 跟着小梅哥初学FPGA ,vivdao开发平台,二选一多路选择器。
- Leetcode-滑窗/差分数组-995. K 连续位的最小翻转次数
- PSINS开源代码初体验——航迹仿真与组合导航
- ESP32-总体理解
- vue eslint 自动修复