看了一下c++primer 发现自己对c++操作符重载的一些细节问题以前没有弄清楚的,现在都基本明白了
/* * ===================================================================================== * * Filename: x.cpp * * Description: c++输入输出操作符重载 * * Version: 1.0 * Created: 2011-4-27 19:35:47 * Revision: none * Compiler: gcc * * Author: YOUR NAME (), * Company: * * ===================================================================================== */ #include<iostream> #include<string> using namespace std; class A{ public: A(){ a=0; b=0; c=" "; } friend ostream& operator<<(ostream& out,const A& t); friend istream& operator>>(istream& in,A &tmp); private: int a; float b; string c; }; ostream& operator<<(ostream& out,const A& t) { out<<t.a<<" "<<t.b<<" "<<t.c;//输出操作符所做格式化尽可能少 return out; } //ostream 为 //非 const,因为写入到流会改变流的状态。该形参是一个引用,因为不能复制 //ostream 对象 //对象为const类型,因为输出一个对象不希望改变该对象 istream& operator>>(istream& in, A &tmp) { in>>tmp.a>>tmp.b>>tmp.c; return in; } //注意不能写成istream& operator>>(istream& in, const A &tmp) //因为输入的目的要将数据读入这个对象之中 int main() { A x; cin>>x; cout<<x<<endl; return 0; }