ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 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

    댓글

© 2018 TISTORY. All rights reserved.