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

 更新时间:2021年08月15日 09:46:13   作者:三丰杂货铺  
下面小编就为大家带来一篇深入理解C++运算符重载。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

友元函数

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

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

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

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

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

在这里插入图片描述

重载:复合赋值

在这里插入图片描述

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
} 

总结

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

相关文章

  • C语言学习之柔性数组详解

    C语言学习之柔性数组详解

    结构体的最后一个元素允许是未知大小的数组,这就叫柔性数组。这篇文中主要为大家详细介绍了C语言中柔性数组的相关知识,需要的可以了解一下
    2023-03-03
  • C语言数组按协议存储与按协议解析数据的实现

    C语言数组按协议存储与按协议解析数据的实现

    今天小编就为大家分享一篇关于C语言数组按协议存储与按协议解析数据的实现,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 浅析string 与char* char[]之间的转换

    浅析string 与char* char[]之间的转换

    与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*
    2013-10-10
  • C++实现获取系统时间的方法小结

    C++实现获取系统时间的方法小结

    这篇文章主要为大家详细介绍了使用C++实现获取系统时间的一些常用方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下
    2024-03-03
  • C++ 函数的介绍

    C++ 函数的介绍

    本篇主要介绍了函数的基础概念以及一些特殊的函数方法和类型,函数重载以及函数指针,下面一起进入文章学习详细的内容吧,需要的朋友也可以参考一下
    2021-12-12
  • C++链表节点的添加和删除介绍

    C++链表节点的添加和删除介绍

    大家好,本篇文章主要讲的是C++链表节点的添加和删除介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • C++中Boost库裁剪与其应用详解

    C++中Boost库裁剪与其应用详解

    大家都知道STL全称"标准模板库(Standard Template Library)",其实它是一套标准,可能有不同的实现,它是 C++ 的"标准库"。Boost 则是一个 C++ 库,被称为"C++ 准标准库"。那么这篇文章文章我们就来详细的介绍C++Boost库的裁剪与其应用,感兴趣的朋友可以一起学习。
    2016-10-10
  • EasyC++函数模板介绍

    EasyC++函数模板介绍

    这篇文章主要介绍了C++函数模板介绍,所谓函数的模板,本质上也就是使用泛型来定义函数,所谓的泛型其实也就是不定的类型,比如说我们使用vector的时候,可以定义各种类型的vector,下面我们一起进入文章详细了解一下C++函数模板,需要的朋友可以参考一下
    2021-12-12
  • C语言实现五子棋游戏

    C语言实现五子棋游戏

    这篇文章主要为大家详细介绍了C语言五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C/C++ 中怎样使用SetConsoleTextAttribute()函数来控制输出字符的颜色

    C/C++ 中怎样使用SetConsoleTextAttribute()函数来控制输出字符的颜色

    这篇文章主要介绍了C/C++ 中如何使用SetConsoleTextAttribute()函数来控制输出字符的颜色,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论