-
명품 C++ 5장 5번C++ 2018. 10. 31. 17:53
5. 다음 Circle 클래스가 있다.
Circle 객체 b를 a에 더하여 a를 키우고자 다음 함수를 작성하였다.
class Circle {int radius;public:Circle(int r) { radius = r; }int getRadius() { return radius; }void setRadius(int r) { radius = r; }void show() { cout << "반지름이 " << radius << "인 원" << endl; }};다음 코드를 실행하면 increasBy() 함수는 목적대로 실행되는가?
값에 의한 호출을 사용하면, 함수 내에서 매개 변수 객체를 변경하여도, 원본 객체를 변경시키지 않습니다.
void increaseBy(Circle a, Circle b) {int r = a.getRadius() + b.getRadius();a.setRadius(r);}main() 함수의 목적을 달성하도록 increaseBy() 함수를 수정하라.
int main() {Circle x(10), y(5);increaseBy(x, y); // x의 반지름이 15인 원을 만들고자 한다.x.show(); // "반지름이 15인 원"을 출력한다.}소스코드
#include <iostream>using namespace std;class Circle {int radius;public:Circle(int r) { radius = r; }int getRadius() { return radius; }void setRadius(int r) { radius = r; }void show() { cout << "반지름이 " << radius << "인 원" << endl; }};void increaseBy(Circle& a, Circle b) {int r = a.getRadius() + b.getRadius();a.setRadius(r);}int main() {Circle x(10), y(5);increaseBy(x, y); // x의 반지름이 15인 원을 만들고자 한다.x.show(); // "반지름이 15인 원"을 출력한다.}실행결과
참조에 의한 호출을 사용하면 원본 객체를 공유하기 때문에 원본 객체에 값이 변경된다.
'C++' 카테고리의 다른 글
명품 C++ 5장 7번 (0) 2018.10.31 명품 C++ 5장 6번 (3) 2018.10.31 명품 C++ 5장 4번 (0) 2018.10.31 명품 C++ 5장 3번 (0) 2018.10.31 명품 C++ 5장 2번 (0) 2018.10.31