#10 [c++]friend 연산자 중복, 참조 반환 연산자 중복

정상준·2022년 11월 5일
0

c++

목록 보기
6/25

✏️ 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();
}
profile
안드로이드개발자

0개의 댓글