• 重载运算符语法讲解


    重载运算符

    这篇随笔我来讲解一下C++语言中重载运算符的相关知识。

    一、重载运算符的用途

    这是一个比较哲学的问题:我们为什么要重载运算符?

    理由就是,我们C++语言中已经给出的运算符(包括算数运算符和逻辑运算符)只是针对C++语言中已经给定的数据类型进行运算,假如我们想要对我们的自定义数据类型进行运算的话,则需要重载运算符,我们可以把重载运算符理解成对已有的运算符的一种重新定义。

    比如:

    double a,b,c;
    a=1/3;
    b=1/2;
    c=a+b;
    printf("%lf",c);
    

    这段程序输出的肯定不是两个分数相加的结果。
    这时候我们就可以重载运算符+。

    二、重载运算符的实现

    语法格式如下(非常重要)

    <返回类型> operator <运算符符号>(<参数>)
    {
    	<定义>;
    }
    

    这里我们举一个例子。

    在优先队列(priority_queue)中,存储的元素较大的会被放到堆顶。如果存的是int或者string等类型还好办(因为他们本身就可以互相比较大小),如果是我们自定义的结构体类型,那就需要重载<运算符。

    比如:

    struct node
    {
        int id;
        double x,y;
    }//定义结构体
    bool operator <(const node &a,const node &b)
    {
        return a.x<b.x && a.y<b.y;
    }//重载运算符“<”
    

    注:这里的结构体保存了一个整型变量id,两个长浮点变量x,y,表示坐标。

    这里的重载运算符先比横坐标后比纵坐标。

    三、重载运算符的注意事项。

    以下运算符不可重载:

    关系运算符"."

    成员指针运算符".*"

    作用域运算符"::"

    sizeof运算符

    三目运算符"?:"

    重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。

    运算符重载实质上是函数重载。

    好了,关于重载运算符的基本知识基本已经被科普完了,这是C++语言程序设计中非常非常常见的一种操作手段。请大家务必重视并用大量例题熟练掌握。

    下课~祝同学们AK IOI!!

  • 相关阅读:
    信息领域热词分类分析03
    虚拟机Linux联网问题
    每日学习
    第七章 Centos下搭建Maven私有仓库
    第六章 Maven-profile及插件
    第五章 Maven-构建生命周期、阶段、目标
    第四章 Maven-依赖管理
    第三章 Maven-pom.xml文件
    第二章 Maven-Repository存储库
    第一章 Maven入门
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11314650.html
Copyright © 2020-2023  润新知