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

一篇文章带你了解c++运算符重载,博智网带你了解详细信息 。
目录

  • 友元函数
  • 重载:复合赋值
  • Operator pairings
  • 自增自减运算符的重载
  • c++20,spaceship operator
  • 总结

友元函数一种全局函数,可以在类里声明,其他地方定义 。或者在类里定义生命 。
但是这个友元函数,不是类的成员 。用的时候直接用,但是可以接触类的所有权限的变量 。
对于,重载操作符来说,可以把一些重载体函数定义为友元函数 。
具体来说,如果进行运算的这两个类,是对等的,没有修改任一个的值,那么,建议用友元 。
如果,类似=,是赋值,对左边的变量做修改了 。那么这时候应该重载为成员函数 。

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


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


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


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



自增自减运算符的重载对于a++和++a,这两个运算符哪个在前,哪个后 。函数是不一样的
c++20,spaceship operator就是只需要重载一个,其他的就都能重载了 。
#include <compare>// return type deduced as std::strong_orderingfriend auto operator<=>(point p1, point p2) = default;int x_;int y_;1#include <iostream> 23class point { 4public: 5point(int x, int y) 6: x_{x} 7, y_{y} {} 89// hidden friend - preferred 10111213private: 141516}; 1718auto main() -> int { 19auto const p2 = point{1, 2}; 20auto const p1 = point{1, 2}; 21std::cout << "p1 == p2 " << (p1 == p2) << '\n'; 22std::cout << "p1 != p2 " << (p1 != p2) << '\n'; 23std::cout << "p1 < p2 " << (p1 < p2) << '\n'; 24std::cout << "p1 > p2 " << (p1 > p2) << '\n'; 25std::cout << "p1 <= p2 " << (p1 <= p2) << '\n'; 26std::cout << "p1 >= p2 " << (p1 >= p2) << '\n'; 27}
总结【一篇文章带你了解c++运算符重载】本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注趣讯吧的更多内容!

    推荐阅读