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; }
posted on 2011-06-09 22:06 speedmancs 阅读(29622) 评论(0) 编辑 收藏 举报