C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++でのストリーム挿入(<<)および抽出(>>)演算子のオーバーロード


C ++は、ストリーム抽出演算子>>およびストリーム挿入演算子<<を使用して、組み込みデータ型を入出力できます。ストリーム挿入演算子とストリーム抽出演算子をオーバーロードして、オブジェクトなどのユーザー定義型の入出力を実行することもできます。

ここでは、オブジェクトを作成せずに呼び出されるため、演算子オーバーロード関数をクラスのフレンドにすることが重要です。

次の例では、抽出演算子>>と挿入演算子<<。

について説明します。

サンプルコード

#include <iostream>
using namespace std;
class Distance {
   private:
   int feet; // 0 to infinite
   int inches; // 0 to 12
   public:
   // required constructors
   Distance() {
      feet = 0;
      inches = 0;
   }
   Distance(int f, int i) {
      feet = f;
      inches = i;
   }
   friend ostream &operator<<( ostream &output, const Distance &D ) {
      output << "F : " << D.feet << " I : " << D.inches;
      return output;
   }
   friend istream &operator>>( istream &input, Distance &D ) {
      input >> D.feet >> D.inches;
      return input;
   }
};
int main() {
   Distance D1(11, 10), D2(5, 11), D3;
   cout << "Enter the value of object : " << endl;
   cin >> D3;
   cout << "First Distance : " << D1 << endl;
   cout << "Second Distance :" << D2 << endl;
   cout << "Third Distance :" << D3 << endl;
   return 0;
}

出力

$./a.out
Enter the value of object :
70
10
First Distance : F : 11 I : 10
Second Distance :F : 5 I : 11
Third Distance :F : 70 I : 10

  1. ++のインクリメントとデクリメント-C++の演算子

    インクリメント演算子++はオペランドに1を加算し、デクリメント演算子--はオペランドから1を減算します。だから、 x = x+1; is the same as x++; 同様に、 x = x-1; is the same as x--;と同じです インクリメント演算子とデクリメント演算子はどちらも、オペランドの前(プレフィックス)または後(ポストフィックス)のいずれかになります。 x = x+1; can be written as ++x; 式の一部としてインクリメントまたはデクリメントを使用する場合、接頭辞と接尾辞の形式に重要な違いがあることに注意してください。プレフィックス形式を

  2. C ++での演算子のオーバーロードの基本的なルールとイディオムは何ですか?

    C ++での演算子のオーバーロードに関しては、従う必要のある3つの基本的なルールがあります。そのようなすべてのルールと同様に、例外もあります。これらの3つのルールは-です 1。 演算子の意味が明確で議論の余地がない場合は常に、オーバーロードしないでください。代わりに、適切に選択された名前で関数を提供してください。基本的に、演算子をオーバーロードするための最初のそして最も重要なルールは、本質的に次のように述べています。 やらないでください。 それは奇妙に思えるかもしれませんが、演算子のオーバーロードが適切な場合はごくわずかです。その理由は、アプリケーションドメインでの演算子の使用がよく知られ