zoukankan      html  css  js  c++  java
  • 重载运算符

    重载运算符

    为什么要重载运算符:
    C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如结构体),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。
    什么是重载运算符:
    简单来说:运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
    如何实现:
    运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。
    运算符重载为类的成员函数的一般格式为:
    <函数类型> operator <运算符>(<参数表>)const
    {
    <函数体>
    }
    以重载“<”运算符为例:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=100;
    struct node//定义结构体
    {
        int a;
        int b;
        bool operator < (node tmp)const//重载运算符函数
        {
            if(a==tmp.a)
            return b<tmp.b;//注意运算符的开口方向,此处为按照b的升序排序(从小到大)
            return a>tmp.a;//按照a的降序排序(从大到小)
        }
    }e[maxn];
    int n;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        cin>>e[i].a>>e[i].b;
        sort(e+1,e+n+1);//排序,因为已经重载了运算符,所以不用再写比较函数
        for(int i=1;i<=n;i++)
        cout<<e[i].a<<" ";
        return 0;
    }

    不使用重载运算符:

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=100;
    struct node
    {
        int a;
        int b;
    }e[maxn];
    int n;
    bool cmp(node x,node y)//排序函数
    {
        if(x.a==y.a)
        return x.b<y.b;
        return x.a>y.a;
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        cin>>e[i].a>>e[i].b;
        sort(e+1,e+n+1,cmp);//需要写一个排序函数cmp
        for(int i=1;i<=n;i++)
        cout<<e[i].a<<" ";
        return 0;
    }
  • 相关阅读:
    无线鼠标换电池了
    Jython Interactive Servlet Console YOU WILL NEVER KNOW IT EXECLLENT!!! GOOD
    Accessing Jython from Java Without Using jythonc
    jython podcast cool isnt't it?
    Python里pycurl使用记录
    Creating an Interactive JRuby Console for the Eclipse Environment
    微软为AJAX和jQuery类库提供CDN服务
    Download A File Using Cygwin and cURL
    What is JMRI?这个是做什么用的,我真没看懂但看着又很强大
    用curl 发送指定的大cookie的http/https request
  • 原文地址:https://www.cnblogs.com/cax1165/p/6070944.html
Copyright © 2011-2022 走看看