美文网首页
C++ - 重载运算符

C++ - 重载运算符

作者: Mitchell | 来源:发表于2016-01-16 15:41 被阅读105次

运算符

  • C++ 预定义表示对数据的运算
    • 只能用于基本的数据类型
  • C++ 提供了数据抽象的手段
    用户自己定义数据类型 -- 类
    • 调用类的成员函数 - >操作它的对象
  • 类的成员函数 -> 操作对象时,很不方便
    • 在数学上,两个复数可以直接进行+/-等运算,在 C++中,是不允许的。

运算符重载

  • 对抽象数据类型也能够直接使用 C++提供的运算符
    • 程序更简洁
    • 代码更容易理解
  • 运算符重载
    • 对已有的运算符赋予多重的含义
    • 使同一运算符作用域不同类型的数据时->不同类型的行为
  • 目的
    • 扩展 C++中提供的运算符的适用范围,以用于类所表示的抽象数据类型
  • 同一个运算符,对不同类型的操作数,所发生的行为不同
    • (5,10i)+(4,8i) = (9,18i)
    • 5 + 4 = 9
  • 运算符重载的 实质函数的重载
  • 在程序编译时候:
    • 把含运算符的表达式 -> 对 运算符函数的调用
    • 把运算符的操作数 ->运算符函数的参数
    • 运算符被多次重载时,根据 实参的类型 决定调用哪个运算符函数
    • 运算符可以被重载成 普通函数
    • 也可以被重载成 类的成员函数
  • 运算符重载为普通函数
    重载为普通函数时,参数个数为运算符目数
class Complex{
    public:
          Complex(double r = 0.0,double i = 0.0){
                real = r;
                imaginary = i;
          }
          double real;
          double imaginary;
};
Complex operator+ (const Complex &a,cost Complex &b)
{
  return Complex(a.real+b.real,a.imaginary+b.imaginary);
}//类名(参数表)就代表一个对象
Complex a(1,2),b(2,3),c;
c = a + b;//相当于什么?
//相当于调用了:
operator+(a,b);
  • 运算符作为成员函数
    重载为成员函数时,参数的个数为运算符目数减一
class Complex{
    public:
          Complex(double r = 0.0,double m = 0.0);
                        real(r),imaginary(m){  }
          Complex operator+ (const Complex &);
          Complex operator- (const Complex &);
    private:
          double real;
          double imaginary;
};
Complex Complex::operator+(const Complex & operand2){
    return Complex(real +operand2.real,imaginary+ operand2.imaginary);
}
Complex Complex::operator-(const Complex & operand2){
    return Complex(real -operand2.real,imaginary- operand2.imaginary);
}
int main(){
    Complex x,y(4.3,8.2),z(3.3,1.1);
    x = y + z;
    x = y - z;
    return 0;
}

相关文章

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • C++ 运算符重载

    运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++运算符已经重载。将*运算符用...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++ 重载运算符

    C++重载运算符

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • 1.2.17_C++ ++ 和 -- 运算符重载

    C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符...

  • C++运算符重载详解

    运算符重载规则 1.被重载的运算符必须是已经存在的C++运算符,不能重载自己创建的运算符; 2.运算符被重载之后,...

网友评论

      本文标题:C++ - 重载运算符

      本文链接:https://www.haomeiwen.com/subject/ajghkttx.html