hw11 OperatorsOverloading
hw11 OperatorsOverloading
[[68.Class]]
#cppTasks
---
```cpp
//Overloading = == + -- ++ []
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
//Constructors
Point() {
x = 0;
y = 0;
}
Point(int x, int y) {
this->x = x;
this->y = y;
}
//Operator Overloading
Point operator + (const Point& other) {
Point temp;
temp.x = this->x + other.x;
temp.y = this->y + other.y;
return temp;
}
Point& operator ++ () {
x++;
y++;
return *this;
}
Point& operator ++ (int value) {
Point temp;
x++;
y++;
return temp;
}
//Set&Get&Print
void SetX(int x) {
this->x = x;
}
void SetY(int y) {
this->y = y;
}
int GetX() {
return x;
}
int GetY() {
return y;
}
void Print() {
cout << "X = " << x << "\t" << "Y = " << y << endl;
}
};
class PointArr {
private:
int size;
int* pointArr;
public:
//Constructors
PointArr(int size) {
this->size = size;
pointArr = new int[size];
for (int i = 0; i < size; i++) {
pointArr[i] = rand();
}
}
PointArr(const PointArr& other) {
this->size = other.size;
pointArr = new int[other.size];
for (int i = 0; i < other.size; i++) {
pointArr[i] = other.pointArr[i];
}
}
//OperatorOverloading
PointArr& operator = (const PointArr& other) {
if (pointArr != nullptr) {
delete[] pointArr;
}
this->size = other.size;
this->pointArr = new int[other.size];
for (int i = 0; i < other.size; i++) {
this->pointArr[i] = other.pointArr[i];
}
return *this;
}
bool operator == (const PointArr& other) {
if (this->size == other.size) {
for (int i = 0; i < size; i++) {
if (pointArr[i] != other.pointArr[i])
return false;
else
return true;
}
}
else return false;
}
int& operator [](int index) {
return pointArr[index];
}
//MemberFunctions
void PrintArr() {
for (int i = 0; i < size; i++) {
cout << pointArr[i] << "\t";
}
}
//Destructor
~PointArr() {
delete[] pointArr;
}
};
int main() {
Point A(3, 5);
Point B(10,20);
Point C(3443,2123);
Point D(1, 1);
C = ++A + B;
D++;
A.Print();
B.Print();
C.Print();
D.Print();
PointArr arrA(7);
PointArr arrB(10);
return 0;
}
```