簡體   English   中英

在C ++中使IO操作符過載時使用cout / cin?

[英]Use cout/cin when overloading IO Operators in C++?

我正在測試一些與IO操作符重載有關的C ++代碼。 代碼如下:

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;
}

<< ,我使用os對象而不是cout以及>>運算符的相似性。 因此,我很想知道兩者之間是否有區別?

區別很明顯,是/ os是輸入/輸出流,而cin / cout是標准輸入/輸出流。 cin / cout是I / O流的實例,而不是同義詞。

關鍵是,除了標准輸入/輸出之外,還有其他流,例如文件,字符串流以及您能想到的任何自定義實現。 如果您在流運算符中使用cin / cout,而忽略了它們應該讀/寫的流,那么最終將得到

file_stream << some_student;

打印到標准輸出,而不是打印到應該輸出的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM