#include <iostream>
using namespace std;
class A {
int a, b;
public:
A() {
a = 0; b = 0;
}
A(int a, int b) {
this->a = a;
this->b = b;
}
//setA, setB, GetA, GetB;
void setA(int a) {
this->a = a;
}
int getA() {
return this->a;
}
void setB(int b) {
this->b = b;
}
int getB() {
return this->b;
}
bool operator > (A& obj) {
if (this->a > obj.getA()) {
return true;
}
return false;
}
bool operator == (A& obj) {
if (this->a == obj.getA()) {
return true;
}
return false;
}
bool operator < (A& obj) {
if (this->a < obj.getA()) {
return true;
}
return false;
}
A operator + (A& obj) {
A res(0, 0);
res.setA(this->a + obj.getA());
return res;
}
A operator - (A& obj) {
A res(0, 0);
res.setA(this->a - obj.getA());
return res;
}
A operator * (A& obj) {
A res(0, 0);
res.setA(this->a * obj.getA());
return res;
}
A operator / (A& obj) {
A res(0, 0);
res.setA(this->a / obj.getA());
return res;
}
void operator++() {
this->a++;
}
void operator--() {
this->a--;
}
void operator << (int n) {
this->a << n;
}
void operator >> (int n) {
this->a >> n;
}
int operator [] (unsigned int i){
if (i == 0) {
return this->a;
}
else {
return this->b;
}
}
double operator() (double p){
return this->a * p;
}
};
int main() {
A obj1(50, 100);
A obj2(100, 20);
if (obj1 > obj2)
cout << "obj1 > obj2" << endl;
else
cout << "obj1 <= obj2" << endl;
A res = obj1 + obj2;
++obj1;
double result = obj1(3.14);
cout << "result: " << result << endl;
obj1 << 3;
cout << obj1.getA();
cout << obj1[0] << ' ' << obj1[1] << endl;
}