zoukankan      html  css  js  c++  java
  • == 运算符重载

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


    #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;
    }
    
    
  • 相关阅读:
    java框架篇---Struts入门
    AJAX开发技术
    程序开发:MVC设计模式与应用
    java基础篇---JSP内置对象详解
    java基础篇---文件上传(commons-FileUpload组件)
    java基础篇---文件上传(smartupload组件)
    java基础篇---枚举详解
    java基础篇---异常处理
    Java基础篇--字符串处理(StringBuffer)
    java基础篇---正则表达式
  • 原文地址:https://www.cnblogs.com/wsq724439564/p/3258158.html
Copyright © 2011-2022 走看看