c++

명품 c++ 7장 연습문제 8번, 9번

케굴 2020. 5. 5. 09:21

8번

프랜즈 함수를 이용해서 작성

#include <iostream>
using namespace std;

class Circle {
	int radius;
public:
	Circle(int radius =0) { this->radius = radius; }
	void show() { cout << "radius " << radius << " 인 원"<<endl; }
	friend Circle operator++(Circle & a);
	friend Circle operator ++ (Circle & a,int x);
};
Circle operator++(Circle & a) {
	a.radius++;
	return a;
}
Circle operator++(Circle &a ,int x) {
	Circle tmp;
	tmp = a;
	a.radius++;
	return tmp;
}
int main() {
	Circle a(5), b(4);
	++a;
	b = a++;
	a.show();
	b.show();
}

객체의 함수로 작성

#include <iostream>
using namespace std;

class Circle {
	int radius;
public:
	Circle(int radius =0) { this->radius = radius; }
	void show() { cout << "radius " << radius << " 인 원"<<endl; }
	Circle &operator++();
	Circle operator ++ (int x);
};
Circle& Circle::operator++() {
	++radius;
	return *this;
}
Circle Circle::operator++(int x) {
	Circle tmp;
	tmp = *this;
	radius++;
	return tmp;
}
int main() {
	Circle a(5), b(4);
	++a;
	b = a++;
	a.show();
	b.show();

}

9번

#include <iostream>
using namespace std;

class Circle{
	int radius;
public:
	Circle(int radius = 0) { this->radius = radius; }
	void show() { cout << "radius " << radius << " 인 원" << endl; }
	friend Circle operator +(int x, Circle a);
};
Circle operator +(int x, Circle a) {
	Circle tmp;
	tmp.radius = a.radius + x;
	return tmp;
}
int main() {
	Circle a(5), b(4);
	b = 1 + a;
	a.show();
	b.show();
  }