== 运算符重载既不能是成员函数也不能是友元函数,只能是普通函数。
#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;
}