美文网首页
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++多态。运算符重载将重载的概念扩展到运算符上,允许赋予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/qxjouhtx.html