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

运算符的重载

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

运算符的重载

Complex Add(const Complex& com) const  //使用类类型做参数,返回值也为类类型
{
   int r=this->real+com.real;
   int i=this->image+com.image;
   return Complex(r,i);
}
int main()
{
  Complex ca(1,2);
  Complex cb(3,4);
  Complex cc;
  ca.Print();
  cb.Print();
  cc.Print();
  cc=ca.Add(cb);
return 0;
}

       运算符的重载实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该重载的运算符时调用此函数。这个函数叫做运算符重载函数,通常为类的成员函数。

        定义运算符重载函数的一般格式:

        返回值类型 类名::operator重载的运算符(参数表)

{......}

Complex operator+(const Complex& com) const
{
    int r=this->real+com.real;
    int i=this->image+com.image;
    return Complex(r,i);
}

int main()
{
  Complex ca(1,2);
  Complex cb(3,4);
  Complex cc;
  ca.Print();
  cb.Print();
  cc.Print();
  cc=ca+cb;
  //相当于 cc=ca.operator+(cb);
  //再相当于 cc=operate+(&ca,cb);
  cc.Print();
  return 0;
}

扩展+=运算符:

void operate+=(const Complex &com)
{
   this->real=this->real+com.real;
   this->image+=com.image;
}
//ca+=cb;
//ca.operate+=(cb);
//operate(&ca,cb);
Complex& operator+=(const Complex& com)  //以引用类型返回
{
  this->real+=com.real;
  this->image+=com.image;
  return *this;
}
int main()    
{
  Complex ca(1,2),cb(3,4),cc;  //这样设计就可以尽量不产生临时对象
  cc=ca+=cb;
  return 0;

}

作业:前置++与后置++在运算符重载中的形式

#include
#include
#include
using namespace std;
class Int
{
   private:
     int  value;
 public:
     Int(int x=0):value(x){}
      ~int() {}  
   Int(const Int& it):value(it.value) {}
   Int operate+(Int& com)
{
   
    int val=value+com.value;
    return Int(val);
}
Int& operate+=(Int &com)
{
  value+=com.value;
   return *this;
 
}
Int operate++(int k) //为了区分前置++和后置++的函数重载,在函数定义时在 
                      //参数列表中,增加无意义的int类型来区分
{  
  int val=value++;
  return Int(val);
  
}
Int& operate++()  //前置++,返回引用
{
    ++value;
return (*this);
    
}
Int operate

};
int main()
{
  Int a(10),b(20),c(0);
  c=a+b;
c=a+=b;
 c=a++;    //等价于a.operate++(0);
c=++a;    //等价于a.operate++();
}

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

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

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