设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C++重载数学运算符 示范演示

发布时间:2022-07-01 12:50 所属栏目:51 来源:互联网
导读:四则运算符(+、-、*、/、+=、-=、*=、/=)和关系运算符(、、=、=、==、!=)都是数学运算符,它们在实际开发中非常常见,被重载的几率也很高,并且有着相似的重载格式。本节以复数类 Complex 为例对它们进行重载,重在演示运算符重载的语法以及规范。 复数
  四则运算符(+、-、*、/、+=、-=、*=、/=)和关系运算符(>、<、<=、>=、==、!=)都是数学运算符,它们在实际开发中非常常见,被重载的几率也很高,并且有着相似的重载格式。本节以复数类 Complex 为例对它们进行重载,重在演示运算符重载的语法以及规范。
 
  复数能够进行完整的四则运算,但不能进行完整的关系运算:我们只能判断两个复数是否相等,但不能比较它们的大小,所以不能对 >、<、<=、>= 进行重载。下面是具体的代码:
  #include <iostream>
  #include <cmath>
  using namespace std;
  //复数类
  class Complex{
  public:  //构造函数
      Complex(double real = 0.0, double imag = 0.0): m_real(real), m_imag(imag){ }
  public:  //运算符重载
      //以全局函数的形式重载
      friend Complex operator+(const Complex &c1, const Complex &c2);
      friend Complex operator-(const Complex &c1, const Complex &c2);
      friend Complex operator*(const Complex &c1, const Complex &c2);
      friend Complex operator/(const Complex &c1, const Complex &c2);
      friend bool operator==(const Complex &c1, const Complex &c2);
      friend bool operator!=(const Complex &c1, const Complex &c2);
      //以成员函数的形式重载
      Complex & operator+=(const Complex &c);
      Complex & operator-=(const Complex &c);
      Complex & operator*=(const Complex &c);
      Complex & operator/=(const Complex &c);
  public:  //成员函数
      double real() const{ return m_real; }
      double imag() const{ return m_imag; }
  private:
      double m_real;  //实部
      double m_imag;  //虚部
  };
 
  需要注意的是,我们以全局函数的形式重载了 +、-、*、/、==、!=,以成员函数的形式重载了 +=、-=、*=、/=,而且应该坚持这样做,不能一股脑都写作成员函数或者全局函数,具体原因我们将在下节《到底以成员函数还是全局函数(友元函数)的形式重载运算符》讲解。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读