栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

下标运算符究竟是单目运算符还是双目运算符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

下标运算符究竟是单目运算符还是双目运算符

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++是把它归类于其他运算符(或者说后缀)的,重载时,可以看作双目运算符来进行重载。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号