== 运算符重载

== 运算符重载既不能是成员函数也不能是友元函数,只能是普通函数。


#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;
}

posted @ 2013-08-01 17:37  shouqiang Wei  阅读(341)  评论(0编辑  收藏  举报