C++ Opera例による tor のオーバーロード

何ですか Opera過負荷ですか?

使い方 オペレーターのオーバーロード in C++、1 つのスコープ内で演算子に複数の意味を指定できます。演算子のオーバーロードの目的は、ユーザー定義のデータ型に対して演算子の特別な意味を提供することです。

演算子オーバーロードの助けを借りて、ほとんどの C++ 演算子。演算子のオーバーロードを使用して、1 つの演算子で異なる操作を実行することもできます。

構文

過負荷をかけるには C++ 演算子を使用する場合は、次のようにクラス内に特別な関数を定義する必要があります。

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

上記の構文の説明は次のとおりです。

  • return_type は関数の戻り値の型です。
  • 次に、operator キーワードについて説明します。
  • シンボルは、オーバーロードされる演算子シンボルを表します。たとえば、+、-、<、++ などです。
  • 引数は関数と同じ方法で演算子関数に渡すことができます。

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

出力:

Operaトールのオーバーロード

コードのスクリーンショットは次のとおりです。

Operaトールのオーバーロード

コードの説明:

  1. iostream ヘッダー ファイルをコードに含めて、その機能を使用します。
  2. プログラムに std 名前空間を含めると、そのクラスを呼び出さずに使用できます。
  3. TestClass という名前のクラスを作成します。
  4. private アクセス修飾子を使用して、クラス メンバーをプライベートにアクセスできるものとしてマークします。
  5. 整数変数 count を作成します。 この変数はプライベートにアクセス可能になります。
  6. public アクセス修飾子を使用して、クラス メンバーをプライベートにアクセスできるものとしてマークします。
  7. クラス コンストラクターを使用して、変数 counter を 5 に初期化します。
  8. — 演算子の意味をオーバーロードします。
  9. 演算子は変数 x の値を 1 減らします。
  10. 演算子オーバーロード セクションの終了。演算子に新しい名前が付けられました。
  11. Display() 関数という名前の関数を定義します。
  12. Display() 関数が呼び出されたときに、変数 count の値を他のテキストとともにコンソールに出力します。 } は、Display() 関数の本体の終わりを示します。
  13. クラス本体の終了。
  14. main() 関数を呼び出します。 プログラム ロジックはこの関数内に追加する必要があります。
  15. クラス TestClass のインスタンスを作成し、それに tc という名前を付けます。
  16. これにより、void 演算子 –() 関数が呼び出されます。
  17. TestClass クラスのスタンスを使用して、Display() 関数を呼び出します。
  18. 関数は正常に完了すると値を返す必要があります。
  19. 関数 main() の本体の終わり。

さまざまなアプローチ Operatorオーバーロード C++

次のいずれかのタイプの関数を実装することにより、演算子のオーバーロードを実行できます。

  1. メンバー関数
  2. 非会員機能
  3. フレンド機能
  • 左オペランドがクラスのオブジェクトである場合、演算子オーバーロード関数はメンバー関数になることがあります。
  • 左オペランドが異なる場合、 Operator オーバーロード関数は非メンバー関数である必要があります。

プライベートおよび保護されたクラス メンバーにアクセスする必要がある場合は、演算子オーバーロード関数をフレンド関数にすることができます。

全部できる C++ Opera過負荷になっていませんか?

いいえ。 C++ オーバーロードできない演算子。

彼らを含める:

  • :: -スコープ解決演算子
  • ?: 三項演算子。
  • 。 -メンバーセレクター
  • Sizeof演算子
  • * -メンバー ポインター セレクター

覚えておいてください観光

  1. 演算子のオーバーロードを使用すると、ユーザー定義型 (オブジェクト、構造体) に対してのみ演算子の動作方法を再定義できます。組み込み型 (float、char、int など) には使用できません。
  2. = と & C++ 演算子はデフォルトでオーバーロードされます。たとえば、= 演算子を使用して同じクラスのオブジェクトを直接コピーできます。
  3. Opera演算子の優先順位は、結合性や演算子の優先順位を変更しません。ただし、括弧を使用して評価の順序を変更することはできます。
  4. オーバーロードできない演算子が4つあります。 C++これらには、スコープ解決演算子 (::)、メンバー選択演算子 (.)、関数へのポインターによるメンバー選択演算子 (.*)、および三項演算子 (?:) が含まれます。

のルール Operaトールのオーバーロード

以下のルールがあります Opera過負荷:

  • 動作させるには、少なくとも 1 つのオペランドがユーザー定義のクラス オブジェクトである必要があります。
  • オーバーロードできるのは既存の演算子のみです。新しい演算子をオーバーロードすることはできません。
  • 一部の演算子はフレンド関数を使用してオーバーロードできません。ただし、そのような演算子はメンバー関数を使用してオーバーロードできます。

オーバーロードする方法 Operaタ

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

出力:

過負荷 Opera例

コードのスクリーンショットは次のとおりです。

過負荷 Opera例

コードの説明:

  1. iostream ヘッダー ファイルをコードに含めて、その機能を使用します。
  2. プログラムに std 名前空間を含めると、そのクラスを呼び出さずに使用できます。
  3. という名前のクラスを作成します Operatorオーバーロード。
  4. private アクセス修飾子を使用して、クラス メンバーをプライベートにアクセスできるものとしてマークします。
  5. 整数変数 x を作成します。 この変数はプライベートにアクセス可能になります。
  6. public アクセス修飾子を使用して、クラス メンバーをプライベートにアクセスできるものとしてマークします。
  7. クラス コンストラクターを使用して、変数 x を 10 に初期化します。
  8. ++ 演算子の意味をオーバーロードします。
  9. 演算子は変数 x の値を 2 増加します。
  10. 演算子オーバーロード セクションの終了。演算子に新しい名前が付けられました。
  11. Print() 関数を呼び出します。
  12. Print() 関数が呼び出されたときに、変数 x の値を他のテキストと一緒にコンソールに出力します。
  13. Print() 関数の本体の終わり。
  14. クラス本体の終了。
  15. main() 関数を呼び出します。 プログラム ロジックはこの関数内に追加する必要があります。
  16. のインスタンスを作成します OperatorOverload ov という名前のクラス。
  17. これにより、void 演算子 ++() 関数が呼び出されます。
  18. のスタンスを使用します。 OperatorOverload クラスを使用して Print() 関数を呼び出します。
  19. 関数は正常に完了すると値を返す必要があります。
  20. 関数 main() の本体の終わり。

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

出力:

過負荷 Opera例

コードのスクリーンショットは次のとおりです。

過負荷 Opera例

コードの説明:

  1. iostream ヘッダー ファイルをプログラムに組み込み、その機能を使用します。
  2. std 名前空間を呼び出さずにそのクラスを使用するには、プログラムに std 名前空間を組み込みます。
  3. TestClass という名前のクラスを作成します。 { はクラス本体の始まりを示します。
  4. private アクセス修飾子を使用して、変数をプライベートとしてマークします。これは、変数がクラス内からのみアクセスできることを意味します。
  5. 実数とそれ以上の XNUMX つの整数変数を定義します。
  6. public アクセス修飾子を使用してコンストラクターを public としてマークします。これは、クラスの外からもアクセスできることを意味します。
  7. クラスコンストラクターの作成と初期化 variables.
  8. 変数realの値を初期化します。
  9. 変数の値を初期化します。
  10. コンストラクター本体の終わり。
  11. + 演算子の意味を上書きします。
  12. TestClass タイプのデータ型結果を作成します。
  13. 複素数には + 演算子を使用します。この行は、ある数値の実部を別の数値の実部に追加します。
  14. 複素数には + 演算子を使用します。この行は、ある数値の虚数部を別の数値の虚数部に追加します。
  15. プログラムは、実行が成功すると変数 result の値を返します。
  16. + 演算子の新しい意味、つまりオーバーロードの定義はこれで終わりです。
  17. print() メソッドを呼び出します。
  18. 加算後の新しい複素数をコンソールに出力します。
  19. print()関数の本体の終わり。
  20. TestClass クラスの本体の終わり。
  21. main() 関数を呼び出します。
  22. 加算する実数部と複素数部の両方の値を渡します。c1 の最初の部分は c2 の最初の部分、つまり 9+4 に加算されます。c1 の 5 番目の部分は c の 3 番目の部分、つまり XNUMX+XNUMX に加算されます。
  23. オーバーロードされた + 演算子を使用して演算を実行し、結果を変数 c3 に格納します。
  24. 変数 c3 の値をコンソールに出力します。
  25. main() 関数の本体の終わり。

まとめ

  • 複数の意味を指定できます。 C++ オペレータ XNUMX つのスコープ内で。
  • これを演算子オーバーロードと呼びます。
  • Operator オーバーロードは、ユーザー定義のデータ型に対して演算子の特別な意味を提供します。
  • 大部分の C++ 演算子のオーバーロードによる演算子。
  • すべてではない C++ 演算子はオーバーロードできます。
  • 演算子をオーバーロードするには、少なくとも 1 つのオペランドがユーザー定義オブジェクトである必要があります。
  • オーバーロードできるのは既存の演算子のみです。新しい演算子をオーバーロードすることはできません。

毎日のGuru99ニュースレター

今すぐ配信される最新かつ最も重要な AI ニュースで一日を始めましょう。