#include <iostream.h>
#include <stdio.h>
class Test
{
private:
int buf1;
int buf2;
public:
Test(int a=0, int b=0){buf1=a,buf2=b;}
void Show(){cout << "buf1=" <<buf1 << "
buf2=" << buf2 << endl; }
void Change(int a,int b){buf1=a,buf2=b;}
//下記のTestは戻り値です。コンストラクタではありません。
Test operator + (Test x);
Test operator - (Test x);
};
//Testオブジェクト同士の加算
Test Test::operator + (Test x)
{
Test _work;
_work.buf1 = buf1 + x.buf1;
_work.buf2 = buf2 + x.buf2;
return _work;
}
//Testオブジェクト同士の減算
Test Test::operator - (Test x)
{
Test _work;
_work.buf1 = buf1 - x.buf1;
_work.buf2 = buf2 - x.buf2;
return _work;
}
int main(void)
{
Test A(5, 10),B(0,10),C;
//演算なし----------------->
cout <<"演算無しの結果--->"<<endl;
cout << "A(演算無し): ";
A.Show();
cout << "B(演算無し): ";
B.Show();
cout << "C(演算無し): ";
C.Show();
//加算----------------------------->
cout <<"加算の結果------->"<<endl;
cout << "A(A=A+A): ";
A=A+A;
A.Show();
//Aを初期値に復元
A.Change(5,10);
cout<<"B(B=A+B): ";
B=A+B;
B.Show();
//Bを初期値に復元
B.Change(0,10);
cout<<"C(C=B+C): ";
C=B+C;
C.Show();
//Cを初期値に復元
C.Change(0,0);
//減算----------------------------->
cout <<"減算の結果------->"<<endl;
cout << "A(A=A-A): ";
A=A-A;
A.Show();
//Aを初期値に復元
A.Change(5,10);
cout<<"B(B=A-B): ";
B=A-B;
B.Show();
//Bを初期値に復元
B.Change(0,10);
cout<<"C(C=B-C): ";
C=B-C;
C.Show();
getchar();
return 0;
}
|