1. 문제

 

1. 두 개의 Circle 객체를 교환하는 swap() 함수를 '참조에 의한 호출'이 되도록 작성하고 호출하는 프로그램을 작성하라.

 

 

2. 결과

 

 

 

3. 코드

 

#include <iostream>
using namespace std;

class Circle;
void swap( Circle &c, Circle &cc );

class Circle {
	int r;
public :
	Circle(int r=1) { this->r = r; }
	void setRadius(int r) { this->r = r; }
	int getRadius() { return r;}
};

void swap( Circle &c, Circle &cc ) {
	int n;

	n=c.getRadius();
	c.setRadius(cc.getRadius() );
	cc.setRadius(n);
}

int main() {
	Circle a;
	Circle b(10);

	cout << "a 반지름 : " << a.getRadius() << endl;
	cout << "b 반지름 : " << b.getRadius() << endl;
	cout << "swap 후" << endl;
	swap(a, b);
	cout << "a 반지름 : " << a.getRadius() << endl;
	cout << "b 반지름 : " << b.getRadius() << endl;

}

 

 

4. 설명

 

Circle 클래스는 반지름을 저장하는 멤버 변수 r, 생성자, 반지름을 재설정하는 setRadius() 멤버 함수, 반지름을 return 해주는 멤버 함수 getRadius()로 구성 됩니다.

 

swap()함수는 Circle 변수 2개를 매개변수로 입력 받으면 두 Circle 객체의 반지름을 바꾸어 줍니다.

 

swap() 함수가 참조에 의한 호출이므로 swap함수에서 따로 값을 return 할 필요는 없습니다.

 

+ Recent posts