输入输出运算符重载,我最初学的时候是看到使用友元,然后类外实现。但是其实输入输出可以像普通运算符一样重载。文字不写多了,就看代码吧。
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
//输入输出运算符重载 //与普通运算符一样重载 //(友元)标准实现 #include <iostream> using namespace std; class MyOperator { public : int val; public : MyOperator(); ~MyOperator(); MyOperator( const MyOperator& e); MyOperator& operator <<( const int & val); MyOperator& operator >>( int val); friend ostream& operator <<(ostream& os, const MyOperator& e); friend istream& operator >>(istream& is,MyOperator& e); }; MyOperator::MyOperator():val( 0 ){} MyOperator::~MyOperator(){} MyOperator::MyOperator( const MyOperator& e) { val=e.val; cout<< "copyconstructor..." <<endl; } /*按照普通的方法重载输出运算符*/ MyOperator& MyOperator:: operator <<( const int & val) //参数如果是类类型应该没有意义吧 { cout<<val; return * this ; } MyOperator& MyOperator:: operator >>( int val) { cin>> val; this ->val=val; return * this ; } /*标准的输入输出重载的方法*/ ostream& operator <<(ostream& os, const MyOperator& e) { return os<<e.val; } istream& operator >>(istream& is,MyOperator& e) { return is>>e.val; } int main() { MyOperator m; int i= 0 ; m<< 4 << 12 ; cout<<endl; m>> 1214 ; cout<<m; cout<<endl; m.val= 100 ; cout<<m; cout<<endl; cin>>m; cout<<m; cout<<endl; return 0 ; } |
你也可以去看看这份博客,阐述的详细:http://blog.csdn.net/forever_wind/article/details/7544289