✏️ friend를 이용한 + 연산자 중복
#include <iostream>
using namespace std;
/*
radius : 3,price : 5
radius : 4,price : 6
radius : 7,price : 11
*/
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;
}
friend Circle operator +(Circle a, Circle b);
};
Circle operator +(Circle a, Circle b) {
Circle tmp;
tmp.radius = a.radius + b.radius;
tmp.price = a.price + b.price;
return tmp;
}
int main() {
Circle a(3, 5), b(4,6), c;
c = a + b;
a.show();
b.show();
c.show();
}
✏️ friend를 이용한 ++ 연산자 중복(전위, 후위)
#include <iostream>
using namespace std;
/*
radius : 4,price : 6
radius : 4,price : 6
radius : 5,price : 7
radius : 4,price : 6
*/
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;
}
friend Circle& operator ++(Circle& b);
friend Circle operator ++(Circle& a, int x);
};
Circle& operator ++(Circle& a) {
a.price++;
a.radius++;
return a;
}
Circle operator ++(Circle& a, int x) {
Circle tmp = a;
a.radius++;
a.price++;
return tmp;
}
int main() {
Circle a(3, 5), b;
b = ++a;
a.show(), b.show();
b = a++;
a.show(), b.show();
}
✏️ 참조를 반환하는 << 연산자 중복
#include <iostream>
using namespace std;
/*
inputed value: 3
inputed value: 5
inputed value: 6
radius : 15,price : 16
*/
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 n) {
radius += n;
price += n;
cout << "inputed value: " << n << endl;
return *this;
}
};
int main() {
Circle a(1, 2);
a << 3 << 5 << 6;
a.show();
}