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;
	system("pause");
	return 0;
}
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
class Person
{
public:
	Person(string name, string sex, string age) :
	  _name(name), _sex(sex), _age(age)
	  {
	  }
	  string getName() const
	  {
		  return _name;
	  }
	  string getSex() const
	  {
		  return _sex;
	  }
	  string getAge() const
	  {
		  return _age;
	  }
private:
	string _name;
	string _sex;
	string _age;
};

ostream& operator<<(ostream &c, const Person& p) //写成iostream会出错的
{
	return c << p.getName() << "\t" << p.getSex() << "\t" << p.getAge() << "\n";
}

int main()
{
	ofstream outfile("out.txt");
	if (!outfile)
	{
		cout << "create or open file error" << endl;
		exit(-1);
	}
	Person p(string("aa"), string("Man"), string("13"));
	outfile << p;
	system("pause");
	return 0;
}

 

posted @ 2012-05-15 19:12  byfei  阅读(33)  评论(0编辑  收藏  举报