[英]C++ Wrap cin and cout in class - Overload << and >> operators
[英]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.