✏️ 전위 ++연산자 중복
#include <iostream>
using namespace std;
/*
radius : 1,price : 2
radius : 0,price : 0
radius : 2,price : 3
radius : 2,price : 3
*/
class Circle {
private:
int radius;
int price;
public:
Circle(int radius = 0, int price = 0) {
this->radius = radius;
this->price = price;
}
void show() {
cout << "radius : " << radius << ',' << "price : " << price << endl;
}
Circle& operator ++() {
radius++;
price++;
return *this;
}
};
int main() {
Circle a(1, 2), b;
a.show();
b.show();
b = ++a;
a.show();
b.show();
}
✏️ 전위 ! 연산자 중복
#include <iostream>
using namespace std;
/*
원 a의 크기와 가격이 0이다.
원 b의 크기와 가격이 0이 아니다.
*/
class Circle {
private:
int radius;
int price;
public:
Circle(int radius = 0, int price = 0) {
this->radius = radius;
this->price = price;
}
void show() {
cout << "radius : " << radius << ',' << "price : " << price << endl;
}
bool operator !() {
if (radius == 0 && price == 0) {
return true;
}
else
{
return false;
}
}
};
int main() {
Circle a(0, 0), b(5, 5);
if (!a) {
cout << "원 a의 크기와 가격이 0이다." << endl;
}
else {
cout << "원 a의 크기와 가격이 0이 아니다." << endl;
}
if (!b) {
cout << "원 b의 크기와 가격이 0이다." << endl;
}
else {
cout << "원 b의 크기와 가격이 0이 아니다." << endl;
}
}
✏️ 후위 ++ 연산자 중복
*전위 ++와 구분하기 위해 임의의 정수를 사용하여 함수 중복 구현
#include <iostream>
using namespace std;
/*
radius : 3,price : 5
radius : 0,price : 0
radius : 4,price : 6
radius : 3,price : 5
*/
class Circle {
private:
int radius;
int price;
public:
Circle(int radius = 0, int price = 0) {
this->radius = radius;
this->price = price;
}
void show() {
cout << "radius : " << radius << ',' << "price : " << price << endl;
}
Circle operator ++(int x) {
Circle tmp = *this;
radius++;
price++;
return tmp;
}
};
int main() {
Circle a(3, 5), b;
a.show();
b.show();
b = a++;
a.show();
b.show();
}