#pragma once
class TestObj
{
public:
int ivalue;
TestObj(void);
virtual TestObj operator+(TestObj ra){TestObj v;v.ivalue = ivalue+ra.ivalue; return v;}
virtual TestObj operator-(TestObj ra){TestObj v;v.ivalue = ivalue-ra.ivalue; return v;}
virtual TestObj operator*(TestObj ra){TestObj v;v.ivalue = ivalue*ra.ivalue; return v;}
virtual TestObj operator/(TestObj ra){TestObj v;v.ivalue = ivalue/ra.ivalue; return v;}
virtual TestObj operator=(TestObj ra){ivalue = ra.ivalue; return *this;}
public:
~TestObj(void);
};
/*
TestObj to1,to2,to3;
to2.ivalue = 5;
to3.ivalue = 2;
to1= to2+to3;
printf("%d/n",to1.ivalue);
to1= to2-to3;
printf("%d/n",to1.ivalue);
to1= to2*to3;
printf("%d/n",to1.ivalue);
to1= to2/to3;
printf("%d/n",to1.ivalue);
to1= to2;
printf("%d/n",to1.ivalue);
getchar();
//子类不能使用父类重载的操作运算符
#pragma once
#include "testobj.h"
class SubObj :
public TestObj
{
public:
SubObj(void);
public:
~SubObj(void);
};
//SubObj不能使用TestObj重载的操作运算符
//如下用法错误
SubObj to1,to2,to3;
to2.ivalue = 5;
to3.ivalue = 2;
to1= to2+to3;
printf("%d/n",to1.ivalue);
to1= to2-to3;
printf("%d/n",to1.ivalue);
to1= to2*to3;
printf("%d/n",to1.ivalue);
to1= to2/to3;
printf("%d/n",to1.ivalue);
to1= to2;
printf("%d/n",to1.ivalue);
getchar();
*/