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

友元函数

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

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

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

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

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

在这里插入图片描述

重载:复合赋值

在这里插入图片描述

Operator pairings

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

在这里插入图片描述

自增自减运算符的重载

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

c++20,spaceship operator

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

#include <compare>

// return type deduced as std::span_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++运算符重载 的全部内容, 来源链接: utcz.com/p/246810.html

回到顶部