2011-09-12 13 views
2

IO演算子のオーバーロードに関連するC++コードをテストしています。コードは以下の通り:IO演算子をC++でオーバーロードする場合は、cout/cinを使用しますか?

class Student { 
private: 
    int no; 
public: 
    Student(int n) 
    { 
     this->no = n; 
    } 
    int getNo() const { 
     return this->no; 
    } 
    friend istream& operator>>(istream& is, Student& s); 
    friend ostream& operator<<(ostream& os, const Student& s); 
}; 
ostream& operator<<(ostream& os, const Student& s){ 
    cout << s.getNo(); // use cout instead of os 
    return os; 
} 
istream& operator>>(istream& is, Student& s) 
{ 
    cin >> s.no; // use cin instead of is 
    return is; 
} 

を但し、<<>>内部に、私が使用することができます。<<

ostream& operator<<(ostream& os, const Student& s){ 
    os << s.getNo(); // use os instead of cout 
    return os; 
} 
istream& operator>>(istream& is, Student& s) 
{ 
    is >> s.no; // use is instead of cin 
    return is; 
} 

を、IはCOUTと>>オペレータの類似の代わりに、OSのオブジェクトを使用します。だから、私はそれに違いがあるかどうかを知りたいのですか?

答えて

5

違いは明らかですが、/ osは入出力ストリーム、cin/coutは標準入出力ストリームです。 cin/coutは、同義語ではなく、入出力ストリームのインスタンスです。

重要なことは、ファイル、文字列ストリームなどの標準的な入出力以外のストリームが考えられます。あなたは、ストリームを無視して、あなたのストリーミング事業者にCIN/COUTを使用している場合、彼らは、あなたが

印刷標準出力にではなく、そのはになったファイルへ
file_stream << some_student; 

になってしまいます、へ/書き込みを読んでください。

+0

標準入出力ストリームとはどういう意味ですか? 「コンピュータプログラムとその環境(通常はテキスト端末)との間の事前入出力された入出力チャネルです」(http://en.wikipedia.org/wiki/Standard_streams)? – ipkiss

+0

右、ええについての音。 –

+0

今はとても明確です。どうもありがとう。 – ipkiss

関連する問題