下载此文档

运算符的重载.doc


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
来自http://blog./insistgogo/article/details/6626952什么是运算符的重载?         运算符与类结合,产生新的含义。 为什么要引入运算符重载?        作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员函数或友元函数(类外的普通函数)规则:不能重载的运算符有. 和.*和?:和:: 和sizeof友元函数和成员函数的使用场合:一般情况下,建议一元运算符使用成员函数,二元运算符使用友元函数       1、运算符的操作需要修改类对象的状态,则使用成员函数。如需要做左值操作数的运算符(如=,+=,++)        2、运算时,有数和对象的混合运算时,必须使用友元       3、二元运算符中,第一个操作数为非对象时,必须使用友元函数。如输入输出运算符<<和>>具体规则如下:运算符建议使用所有一元运算符成员函数=()[] ->必须是成员函数+=-=/=*=^=&=!=%=>>=<<=,,例如:–,+,*,/友元函数<<>>    当参数不会被改变,一般按const引用来传递(若是使用成员函数重载,函数也为const).    对于返回数值的决定:    1)如果返回值可能出现在=号左边,则只能作为左值,返回非const引用。    2)如果返回值只能出现在=号右边,则只需作为右值,返回const型引用或者const型值。    3)如果返回值既可能出现在=号左边或者右边,则其返回值须作为左值,返回非const引用。运算符重载举例:+和-运算符的重载:[cpp] viewplaincopyprint?class Point    {    private:        int x;   public:        Point(int x1)      {   x=x1;}        Point(Point& p)         {   x=;}      const Point operator+(const Point& p);//使用成员函数重载加号运算符      friend const Point operator-(const Point& p1,const Point& p2);//使用友元函数重载减号运算符  };      const Point Point::operator+(const Point& p)  {      return Point(x+);  }    Point const operator-(const Point& p1,const Point& p2)  {      return Point(-);  }  调用:[cpp] viewplaincopyprint?Point a(1);    Point b(2);  a+b;  //正确,调用成员函数  a-b;  //正确,调用友元函数  a+1;  //正确,先调用类型转换函数,把1变成对象,之后调用成员函数  a-1;  //正确,先调用类型转换函数,把1变成对象,之后调用友元函数  1+a;  //错误,调用成员函数时,第一个操作数必须是对象,因为第一个操作数还有调用成员函数的功能  1-a;  //正确,先类型转换 后调用友元函数  总结:1、由于+-都是出现在=号的右边,如c=a+b,即会返回一个右值,可以返回const型值2、后几个表达式讨论的就是,数和对象混合运算符的情况,一般出现这种情况,常使用友元函数3、双目运算符的重载:     重载运算符函数名:operator@(参数表)      隐式调用形式:obj1+obj2     显式调用形式:+(OBJobj2)---成员函数                                 operator+(OBJobj1,OBJobj2)---友元函数     执行时,隐式调用形式和显式调用形式都会调用函数operator+()++和--运算符的重载:[cpp] viewplaincopyprint?class Point    {    private:        int x;   public:        Point(int x1)      {   x=x1;}        Point operator++();//成员函数定义自增      const Point operator++(int x); //后缀可以返回一个const类型的值      friend Point operator--(Po

运算符的重载 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小89 KB
  • 时间2020-04-09