== 运算符重载
== 运算符重载既不能是成员函数也不能是友元函数,只能是普通函数。
#include<iostream> using namespace std; class Vector { public: Vector(int s,int an_array[]); ~Vector() { delete []rep; } int get_size()const { return size; } //重载等号= const Vector& operator=(const Vector & x); int operator[] (int index) { return rep[index]; } //重载下标。 const int & operator[](int index)const { return rep[index]; } private: int *rep; int size; }; // == 的重载既不能是成员函数,也不能使友元函数。 bool operator==(const Vector& a,const Vector& b) { bool boo=true; if(a.get_size()!=b.get_size()) { boo=false; } else { int index=0; int s=a.get_size(); while(index<s && a[index]==b[index]) { ++index; } if(index<s) { boo=false; } } return boo; } Vector::Vector(int s,int an_array[]):size(s),rep(new int[s]) { for(int i=0;i<size;i++) { rep[i]=an_array[i]; } } //重载运算符 = const Vector& Vector::operator=(const Vector& x) { if(this!=&x) { size=x.size; delete[] rep; rep=new int[size]; for(int i=0;i<size;i++) { rep[i]=x.rep[i]; } } if(rep!=x.rep) { delete[] rep; rep=new int[size]; for(int i= 0;i<size;i++) { rep[i]=x.rep[i]; } } return *this; } //重载输出运算符 << ostream& operator<<(ostream &out,const Vector& x) { int s=x.get_size(); for(int i= 0;i<s;i++) { out<<x[i]<<endl; } return out; } int main() { int arry1[6]={1,2,3,4,5,6}; int arry2[7]={34,2,3,4,54,6,1}; Vector v1(6,arry1),v2(7,arry2); cout<<"v1 : "<<v1<<endl; cout<<"v2 : "<<v2<<endl; bool b= (v1==v2); cout<<"v1 == v2 :"<<b <<endl; return 0; }