数组下标运算符[ ]为什么只能重载为类成员函数,而不能重载为友元函数?

2020-06-02 科技 184阅读
这个问题你不该在这里问,不是由我们设计C++的,老外有老外的想法。
你这么想知道也可以提供几个选项:
1.此运算符有两个参数,左参数为类恰好符合类成员调用操作符的条件,作为成员函数,它充分确保了只能访问类内的成员;如果是友元,需要设置两个参数,这里会产生一些误会,由于C++继承的存在,友元的两个参数调用会有问题出现不清楚的状况,即基类的成员模糊调用的情况,这不利于程序设计,其他的几个类似的操作符也有这种情况,由于需要引用类内的成员,容易混淆细节。
2.所谓的只能重载为类成员的操作符有四个=、[]、()、->,这几个其实都有共同特点,那就是涉及到了类数据成员的引用,虽然还有一个*也是涉及到了引用,但是用ADT设计程序的话,我们更倾向于不使用指针,所以这四个可以说是比较常用的操作符,如果说从类的基本属性也就是数据的封装来看,这种规定其实是这个程序设计方法的体现,友元函数对类的成员调用毕竟本身就有违数据封装的基本思想。
3.其实,现代编程还有一个很重要的特点,那就是简便性,这是程序设计工程化的一个方案,我们设计的程序就是需要更容易理解且不容易出错,这种规定想来是为了确保这种编程思想的贯彻而设计的。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com