首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于重载操作符,大家来帮忙指点.该如何处理

2012-02-08 
关于重载操作符,大家来帮忙指点...操作符- 的重载:classSonyHandle{Sony*sppublic:Sony*operator- (){r

关于重载操作符,大家来帮忙指点...
操作符-> 的重载:
class   SonyHandle
{
    Sony*   sp;
    public:
      Sony*   operator-> (){return   sp;}
      SonyHandle(Sony*   pp):sp(pp){}
};

其中Sony*   operator-> (){return   sp;}小弟想不明白,重载后的-> ,形参是什么,返回Sony类的指针有什么用,无非是用-> 来操作成员函数嘛,干吗要返回一个指针呢.()里一个参数也没有,到底是用哪个类指针来操作成员函数呢???




[解决办法]
成员访问操作符箭头被重载为一元操作符即它没有参数当它被用在表达式中时只
能根据左边操作数的类型来选择它例如下面给出的语句
point-> action();
将检查point 以决定其类型如果point 是某一个类类型的指针则这个语句使用内置成
员访问操作符箭头的语义如果point 是某一个类类型的对象或引用则查找这个类的重载
的成员操作符箭头如果没有定义成员操作符则该语句就是错的因为类对象或引用通常
必须使用点成员访问操作符来引用类成员如果定义了重载的成员访问操作符箭头则它被
绑定到point 上并被调用
重载的成员访问操作符箭头的返回类型必须是一个类类型的指针或者是定义该成员
访问操作符箭头的类的一个对象如果返回类型是一个类类型的指针则内置成员访问操
作符箭头的语义被应用在返回值上如果返回值是另外一个类的对象或引用则递归应用该
过程直到返回的是指针类型或语句错误

热点排行