c++20的三向比较运算符()怎么用 一次性实现所有比较函数【新特性】

admin 百科 9
C++20三向比较运算符()可自动生成全部六个比较运算符,支持默认实现(= default)或手动返回std::strong_ordering等类型,需确保成员可比较且operator==逻辑一致。

c++20的三向比较运算符()怎么用 一次性实现所有比较函数【新特性】-第1张图片-佛山资讯网

在 C++20 中,三向比较运算符(operator),俗称“太空船运算符”(spaceship operator),能让你用一个函数**自动生成所有六个比较运算符**(!=、<code>、<code>>>=),大幅减少样板代码,还能保证语义一致性。

基本写法:声明并默认实现

最简单的方式是让编译器为你生成默认的三向比较:

  • 在类中声明 operator 并加上
  • 要求所有成员变量都支持三向比较(即有 operator 或可被隐式转换为支持类型)

例如:

struct Point {
  int x, y;
  auto operator(const Point&) const = default;
};

这样,Point{1,2} == Point{1,2}Point{1,3} 等全部可用——编译器按成员顺序逐个比较,类似字典序。

立即学习“C++免费学习笔记(深入)”;

标签: c++ 隐式转换

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~