美文网首页
c++ 运算符重载

c++ 运算符重载

作者: FakeCSer爱去网吧 | 来源:发表于2020-04-01 15:38 被阅读0次
    • 为了使用系统的运算符对自定义类对象进行操作(如+ -)
    • 运算符重载是将运算符重载为一种特殊的函数,函数名是operator后的运算符符号
    • 既然是一种函数,也有返回值和参数表


    定义成非成员函数(普通的全局函数)

    运算符重载复数加 +

    inline complex operator+(const complex& x, const complex& y)
    {
            return complex(x.real()+y.real(),
                             x.imag()+y.imag());
    }
    

    在类外定义的 + 运算符重载

    • 有两个参数,通过函数取得私有数据并且加在一起
    • 返回值中,创建临时对象,并赋值返回
    • 临时对象:在求解表达式的时候,如果需要一个地方存储其运算结果,编译器会创建一个没命名的对象,这就是临时对象。C++程序员通常用temporary这个术语来代替temporary object。

    运算符重载复数IO <<

    #include <iostream>
    using namespace std;
    ostream& operator<< (ostream& os,const complex& x)
    {
            return  os << '(' << x.real() <<  ',' << x.imag() << ')';
    }
    
    • c++对内置的各种类都重载了<<流操作,用户自定义的类必须手动重载
    • << 的重载只能是全局的
    • 返回值也是ostream类型为了连续<< : cout << complex1<<complex2

    定义成成员函数

    Box operator+(const Box& b)
          {
             Box box;
             box.length = this->length + b.length;
             box.breadth = this->breadth + b.breadth;
             box.height = this->height + b.height;
             return box;
          }
    

    做成员函数的运算符重载

    • 做成员函数时,运算符重载 + 只有一个参数,又因为+是个二元运算符,另一个参数其实是定义这个运算符重载的类的this指针。

    相关文章

      网友评论

          本文标题:c++ 运算符重载

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