とてもシンプルです。
ポイントを表す構造体を定義しました。そのような構造体が 2 つあると仮定すると、問題のコードはそれらの比較演算子を定義するため、次のようなものを記述できます。
if (pt1 < pt2) { ...
<コンパイラは記号をどのように扱うことができますか? C++ では、次のことを行っています。式pt1 < pt2は として解釈されpt1.operator < (pt2)ます。つまり、 objectという特別な名前のメソッドが呼び出され、引数は に等しくなります。operator <pt1pt2
それが何をしているのか見てみましょう。const Point &p引数の は、比較されるもう一方のオペランドを示します。constオペランドを変更しないことを示し (これにより、コンパイラはより効果的なコードを生成できます)、渡されたものをコピーするのではなく、実際のインスタンス&を操作することを意味します (これも、コピーが行われないため、より高速です)。比較)。structPoint
ここで、式は、左側のオペランドの値 (オブジェクト、つまり、メソッドが実行されているコンテキスト内のオブジェクト)*が右側のオペランドの値と比較されているx<p.xかどうかをチェックします。次に、コードは左辺が右辺と等しい場合をチェックするため、が比較されます。xthisxxy
*言語純粋主義者向け: 言葉遣いは正確ではありませんが、初心者向けの説明では問題ありません。