几个常用的运算符的重载: I/O : 当我们对一个类重载<<,>>运算符之后,就可以直接使用cout<<x,cin>>x两种简单的操作 a.重载输出运算符<< 因重最左边的操作数是ostream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //<<函数定义格式 friend ostream operator<<(ostream&,const nameclass&)const; //<<函数实现部分 ostream & operator<<(ostream& out,const classname& object) { //local delcare if any //check object ostream //output the members of the object //... return out; } b.重载输出运算符>> 因重最左边的操作数是istream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //<<函数定义格式 friend istream operator>>(istream&,const nameclass&)const; //<<函数实现部分 istream & operator>>(istream& in,const classname& object) { //local delcare if any //check object istream //output the members of the object //... return in; } c.<<,>>代码实现 //重载函数<<,>>定义 class OpOver { public: OpOver(int i=0;int j=0){a=i;b=j;}; friend ostream& operator<<(ostream&,const OpOver&); friend istream& operator>>(istream&,const OpOver&); OpOver operator+(const OpOver&)const; bool operator==(const OpOver&)const; private: int a; int b; }; //重载函数<<,>>实现 ostream& operator<<(ostream& out,const OpOver& right) { out<<right.a<<","<<right.b; return out; } istream& operator>>(istream& in,const OpOver& right) { in>>right.a>>right.b; return in; } 下标运算符的: 它必须用类的成员函数来实现,而不能用友元函数 按位置索引快速的访问容器类的单个元素,容器如string,数组,vector等 重载下标运算符[]设计方案 一般要实现两个[]运算符,一个用于访问加上const,一个用于修改不加const. 定义[] class demo { public: int& operator[](const size_t); //用于修改 const int& operator[](const size_t)const; private: vector<int> data; }; 实现[] int& demo::operator[](const size_t index) { return data[index];} const int& demo::operator[](const size_t index)const { return data[index];}