美文网首页
运算符重载

运算符重载

作者: 带带吴腾跃 | 来源:发表于2019-11-06 18:26 被阅读0次

例如“+”法运算符并不能用于两个类或者两个数组直接相加,但有个方法可以用“+”操作符使其直接相加,那就是重载,这也是体现C++多态的一一种形式。

重载的声明:

返回值类型 operator 要重载但运算符 (传入的参数)

其实仔细看不难发现,重载的声明跟函数声明很像,只需要把函数名字改成 operator 要重载的运算符 即可。

我们通过一个使用类的例子来应用运算符重载。
声明一个时间类,包含小时和分,类成员函数详细内容不再写出。

class Time
{
private:
    int hours;
    int minutes;
public:
    Time();
    Time(int h,int m = 0);
    void AddHr(int h);
    void AddMin(int m);
    void Reset(int h = 0,int m = 0);
    Time Sum(const Time & t)const;
    void show()const;
}

此时我们可以调用类内函数Sum来求两个Time类型的和。

Time a,b;
a.Sum(b)const;

现在我们把类内函数Sum改成“+”法运算符的重载,实现相同的功能。
只需要将Time Sum(const Time & t)const;次函数声明的函数名改成operator+,如下:

Time operator+(const Time & t)const;

此时,我们就可以对a,b两个Time类型的数据直接相加。(函数内容就不再赘述)

重载的限制

  • 1.所重载的运算符的运算中必须有一个数据类型是用户定义的,例如两个double类型做减法运算,然后你把“-”法运算符重载成加法的功能,那计算机到底该如何运算?

  • 2.不能违反运算符原来的句法规则,例如不能用%去重载成一个声明变量的运算符。

int a;
% b; //invalid
  • 3.你不能去创建一个新的运算符,例如**。
  • 4.有一些运算符不能重载。
  • 5.下面几个运算符只能通过成员函数进行重载。
    赋值运算符 =
    函数调用运算符 ()
    下标运算符 []
    通过指针访问类成员的运算符 ->

相关文章

  • 运算符重载及其他约定

    7.1 重载算术运算符 重载二元算术运算符 重载复合赋值运算符 重载一元运算符 重载比较运算符 等号运算符:‘eq...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 2019-07-11 运算符的重载

    运算符的重载 重载运算符 (“::”,“.*”,“.”,“?:”)不能被重载。 重载运算符时,不能改变其本质,如不...

  • 运算符重载

    一.+号运算符重载 二.<<号运算符重载 三.指针运算符重载(智能指针)

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

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

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

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

  • C++重载

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

  • C++运算符重载详解

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

  • 第十一章 使用类

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

  • 4.0 C++远征:重载运算符

    重载运算符 [TOC] 四、重载运算符 ​ 概念 : 给原有运算符赋予新功能。 ​ 本质 : 函数重载。 ...

网友评论

      本文标题:运算符重载

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