标题:C++重载流操作符的例子 出处:Felix021 时间:Tue, 29 Apr 2008 16:27:57 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?871 内容: Overload operator << felix写的一个简单例子: #include using namespace std; class testclass{ public: int a, b; testclass(int a1, int b1){ a = a1, b = b1; } friend ostream & operator <<(ostream & os, testclass a1){ cout << "a = " << a1.a << ", b = " << a1.b << endl; return os; } friend ostream & operator <<(ostream & os, testclass *a1){ cout << "a = " << a1->a << ", b = " << a1->b << endl; return os; } };//end of testclass int main(){ testclass *a1 = new testclass(1, 2); cout << a1; cout << *a1; getchar(); return 0; } 下面是更详细的重载各个流操作符的例子,原出处是Thinking In C++ copy 自 http://www.cndev.org/forum/msg.aspx?pid=233806 信息主题: 重载流操作符的例子 信息作者: sealw 发表时间: 2005-11-08 16:43:38 阅读次数: 199 信息内容: 不好意思,来自Thinking in C++ TICPP-2nd-ed-Vol-one\TICPP-2nd-ed-Vol-one-html\Chapter12.html //: C12:IostreamOperatorOverloading.cpp // Example of non-member overloaded operators #include "../require.h" #include #include // "String streams" #include using namespace std; class IntArray { enum { sz = 5 }; int i[sz]; public: IntArray() { memset(i, 0, sz* sizeof(*i)); } int& operator[](int x) { require(x >= 0 && x < sz, "IntArray::operator[] out of range"); return i[x]; } friend ostream& operator<<(ostream& os, const IntArray& ia); friend istream& operator>>(istream& is, IntArray& ia); }; ostream& operator<<(ostream& os, const IntArray& ia) { for(int j = 0; j < ia.sz; j++) { os << ia.i[j]; if(j != ia.sz -1) os << ", "; } os << endl; return os; } istream& operator>>(istream& is, IntArray& ia){ for(int j = 0; j < ia.sz; j++) is >> ia.i[j]; return is; } int main() { stringstream input("47 34 56 92 103"); IntArray I; input >> I; I[4] = -1; // Use overloaded operator[] cout << I; } ///:~ Generated by Bo-blog 2.1.0