例 # 1: C++ での「==」演算子のオーバーロード:
C++ で「==」演算子をオーバーロードするために、次の C++ クラスを設計しました。
C++ クラスの名前は ProductPrice です。このクラス内には、private メンバー「price」があります。その後、いくつかのパブリック メンバー関数があります。 「userInput」という名前の最初の関数は、ユーザーからの入力として製品価格を受け取ります。次に、C++ で「==」演算子をオーバーロードする関数があります。 ProductPrice クラスのオブジェクトをこの関数に渡しました。この関数内には、2 つの製品の価格が等しい場合は「true」を返し、そうでない場合は「false」を返す「if」ステートメントがあります。
これをテストするために、下の画像に示すドライバー関数を使用します。
「main()」関数では、最初にクラスの 2 つのオブジェクトを作成しました。次に、ユーザーからの入力として 2 つの製品の価格を取得するために、2 つのオブジェクトのそれぞれで「userInput」関数を 1 つずつ呼び出しました。その後、2 つの価格が等しい場合はメッセージを出力し、そうでない場合は別のメッセージを出力する「if」ステートメントがあります。
次のコマンドを使用してこのプログラムをコンパイルしました。
$ g++ ComparisonOperator.cpp –o 比較演算子
次に、以下に示すコマンドを使用して実行しました。
$ . / 比較演算子
このコードを実行すると、次の画像に示すように、最初の製品の価格を入力するよう求められました。
次に、下の画像に示すように、2 番目の製品の価格を入力するよう求められました。
両方の製品に同じ価格を入力したため、次の出力で「==」演算子が正常にオーバーロードされていることがわかります。
ここで、「else」ステートメントをテストするために、下の画像に示すように、2 つの異なる製品価格を入力しました。
例 # 2: C++ での「!=」演算子のオーバーロード:
C++ で「!=」演算子をオーバーロードするために、次の C++ クラスを設計しました。
このプログラムは、最初の例と非常によく似ています。唯一の違いは、「==」演算子を「!=」演算子に置き換えたことです。
これをテストするために、下の画像に示すドライバー関数を使用します。
ユーザーからの入力として 2 つの製品の価格を取得するために、2 つのオブジェクトを 1 つずつ使用して「main()」関数で「userInput」関数を呼び出しました。その後、2 つの価格が等しくない場合はメッセージを出力し、等しい場合は別のメッセージを出力する「if」ステートメントがあります。
このコードを 2 つの異なる製品価格で実行すると、次の画像からわかるように、不等式演算子が正常にオーバーロードされていることがわかりました。
ここで、「else」ステートメントをテストするために、以下の画像に示すように、2 つの類似した製品価格を入力しました。
例 # 3: C++ での '>' 演算子のオーバーロード:
C++ で「>」演算子をオーバーロードするために、次の C++ クラスを設計しました。
このプログラムは、上記の例にも似ています。唯一の違いは、「!=」演算子を「>」演算子に置き換えたことです。
これをテストするために、下の画像に示すドライバー関数を使用します。
ユーザーからの入力として 2 つの製品の価格を取得するために、2 つのオブジェクトを 1 つずつ使用して「main()」関数で「userInput」関数を呼び出しました。その後、最初の価格が他の価格よりも高い場合はメッセージを出力し、そうでない場合は別のメッセージを出力する「if」ステートメントがあります。
このコードを 2 つの異なる製品価格で実行すると、次の画像からわかるように、大なり演算子が正常にオーバーロードされていることがわかりました。
ここで、「else」ステートメントをテストするために、以下の画像に示すように、2 つの類似した製品価格を入力しました。
例 # 4: C++ での「<」演算子のオーバーロード:
C++ で「<」演算子をオーバーロードするために、次の C++ クラスを設計しました。
このプログラムは、上記の例にも似ています。唯一の違いは、「>」演算子を「<」演算子に置き換えたことです。
これをテストするために、下の画像に示すドライバー関数を使用します。
ユーザーからの入力として 2 つの製品の価格を取得するために、2 つのオブジェクトを 1 つずつ使用して「main()」関数で「userInput」関数を呼び出しました。その後、最初の価格が他の価格よりも低い場合はメッセージを出力し、そうでない場合は別のメッセージを出力する「if」ステートメントがあります。
このコードを 2 つの異なる製品価格で実行すると、次の画像からわかるように、小なり演算子が正常にオーバーロードされていることがわかりました。
ここで、「else」ステートメントをテストするために、2 つの異なる製品価格を再度入力しましたが、今回は、下の画像に示すように、最初の製品の価格が 2 番目の製品よりも高くなっています。
例 # 5: C++ での「>=」演算子のオーバーロード:
C++ で「>=」演算子をオーバーロードするために、次の C++ クラスを設計しました。
これは、上記の例とは少し異なります。今回は演算子をオーバーロードしていますが、「||」で区切られた「if」ステートメント内に 2 つの条件があります。シンボル。これは、このステートメントが製品の価格が別の価格以上かどうかをチェックすることを意味します。
これをテストするために、下の画像に示すドライバー関数を使用します。
ユーザーからの入力として 2 つの製品の価格を取得するために、2 つのオブジェクトを 1 つずつ使用して「main()」関数で「userInput」関数を呼び出しました。その後、最初の価格が他の価格以上の場合はメッセージを出力し、そうでない場合は別のメッセージを出力する「if」ステートメントがあります。
このコードを 2 つの異なる製品価格で実行したところ、次の画像からわかるように、「以上」演算子が正常にオーバーロードされていることがわかりました。
ここで、「else」ステートメントをテストするために、下の画像に示すように、最初の製品価格を 2 番目の製品価格よりも低く入力しました。
例 # 6: C++ での「<=」演算子のオーバーロード:
5 番目の例と同じ方法に従って、「<=」演算子もオーバーロードしました。そのコードは次のとおりです。
異なる値を使用したこのプログラムの実行結果は、以下の画像に示されています。
結論:
この記事では、Ubuntu 20.04 の C++ で 6 つの比較演算子をオーバーロードする方法について詳しく説明しました。演算子のオーバーロードの簡単な紹介から始めて、C++ の 6 つの比較演算子すべてをオーバーロードしました。これらすべてのメソッドを示すために、同じユーザー定義クラスを使用しました。これらのメソッドを実行すると、他のユーザー定義クラスに対してこれらの比較演算子をオーバーロードできるようになります。