zoukankan      html  css  js  c++  java
  • c++ operator重载的例子

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    	A(double _data = 0.0):data(_data){}
    	A& operator = (const A& rhs)
    	{
    		data = rhs.data;
    		return *this;
    	}
    	
    	friend A operator + (const A& lhs,const A& rhs);
    	friend A operator - (const A& lhs,const A& rhs);
    	friend A operator * (const A& lhs,const A& rhs);
    	friend A operator + (const A& lhs,double rhs);
    	friend A operator + (double lhs,const A& rhs);
    	friend A operator * (const A& lhs,double rhs);
    	friend A operator * (double lhs,const A& rhs);
    	friend A operator - (const A& lhs,double rhs);
    	friend A operator - (double lhs,const A& rhs);
    	
    	
    	friend ostream& operator << (ostream& fout,A& a);
    //	A& operator += (const A& rhs);
    //	A& operator -= (const A& rhs);
    //	A& operator *= (const A& rhs);	
    private:
    	double data;
    };
    
    A operator + (const A& lhs,const A& rhs)
    {
    	A res(0);
    	res.data = lhs.data + rhs.data;
    	return res;
    }
    A operator - (const A& lhs,const A& rhs)
    {
    	A res(0);
    	res.data = lhs.data - rhs.data;
    	return res;
    }
    A operator * (const A& lhs,const A& rhs)
    {
    	A res(0);
    	res.data = lhs.data * rhs.data;
    	return res;
    }
     A operator + (const A& lhs,double rhs)
     {
     	A res(0);
    	res.data = lhs.data + rhs;
    	return res;
    }
    
    A operator + (double lhs,const A& rhs)
    {
     	A res(0);
    	res.data = lhs + rhs.data;
    	return res;
    }
    A operator * (const A& lhs,double rhs)
    {
    	A res(0);
    	res.data = lhs.data * rhs;
    	return res;
    }
    A operator * (double lhs,const A& rhs)
    {
    	A res(0);
    	res.data = lhs * rhs.data;
    	return res;
    }
    A operator - (const A& lhs,double rhs)
    {
    	A res(0);
    	res.data = lhs.data - rhs;
    	return res;	
    }
    A operator - (double lhs,const A& rhs)
    {
    	A res(0);
    	res.data = lhs - rhs.data;
    	return res;	
    }
    	
    ostream& operator << (ostream& fout,A& a)
    {
    	fout << a.data ;
    	return fout;
    }
    int main(int argc, char* argv[])
    {
    	A a(2.3);
    	A b(1.2);
    	A d(3.4);
    	A c;
    	c = a + b + d;
    	c=a+b;
    	c=a+1.0;
    	c=a-b;
    	c=a-1.0;
    	c=a*b;
    	c=a*1.0;
    	cout << c << endl;
    	
    	c=1.0+2.0*a*a-3.0*a*b;
    	cout << c << endl;
    	return 0;
    }
  • 相关阅读:
    一些常用的Unix命令
    Shortcut Blocks with Symbol to_proc 通过to_proc为代码块逻辑命名
    Using with_scope 使用with_scope
    Move Find into Model 将查询方法从控制器上移至模型
    Find Through Association 使用级联查询
    Dynamic find_by Methods 使用动态的find_by方法
    Caching with Instance Variables 缓存与实例变量
    深入浅出object-c
    IT大神进化史-第二章
    IT大神进化史-第一章
  • 原文地址:https://www.cnblogs.com/speedmancs/p/2076873.html
Copyright © 2011-2022 走看看