当前位置 博文首页 > 文章内容

    一篇文章带你了解c++运算符重载

    作者:shunshunshun18 栏目:未分类 时间:2021-08-15 14:45:14

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    友元函数

    一种全局函数,可以在类里声明,其他地方定义。或者在类里定义生命。

    但是这个友元函数,不是类的成员。用的时候直接用,但是可以接触类的所有权限的变量。

    对于,重载操作符来说,可以把一些重载体函数定义为友元函数。

    具体来说,如果进行运算的这两个类,是对等的,没有修改任一个的值,那么,建议用友元。

    如果,类似=,是赋值,对左边的变量做修改了。那么这时候应该重载为成员函数。

    在这里插入图片描述

    重载:复合赋值

    在这里插入图片描述

    Operator pairings

    许多操作符是成对的,重载其中一个的时候,另一个相对应的也应该重载。

    在这里插入图片描述

    自增自减运算符的重载

    对于a++和++a,这两个运算符哪个在前,哪个后。函数是不一样的

    c++20,spaceship operator

    就是只需要重载一个,其他的就都能重载了。

    #include <compare>
    // return type deduced as std::strong_ordering
    friend auto operator<=>(point p1, point p2) = default;
    int x_;
    int y_;
    1
    #include <iostream> 2
    3
    class point { 4
    public: 5
    point(int x, int y) 6
    : x_{x} 7
    , y_{y} {} 8
    9
    // hidden friend - preferred 10
    11
    12
    13
    private: 14
    15
    16
    }; 17
    18
    auto main() -> int { 19
    auto const p2 = point{1, 2}; 20
    auto const p1 = point{1, 2}; 21
    std::cout << "p1 == p2 " << (p1 == p2) << '\n'; 22
    std::cout << "p1 != p2 " << (p1 != p2) << '\n'; 23
    std::cout << "p1 < p2 " << (p1 < p2) << '\n'; 24
    std::cout << "p1 > p2 " << (p1 > p2) << '\n'; 25
    std::cout << "p1 <= p2 " << (p1 <= p2) << '\n'; 26
    std::cout << "p1 >= p2 " << (p1 >= p2) << '\n'; 27
    } 
    

    总结

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注IIS7站长之家博文的更多内容!