ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 4장 1번
    C++ 2018. 10. 29. 22:47

    1 다음은 색의 3요소인 red, green, blue로 색을 추상화한 Color 클래스를 선언하고 활용하는 코드이다. 빈칸을 채워라. red, green, blue는 0~255의 값만 가진다.


    소스코드


    #include <iostream>
    using namespace std;
    class Color {
        int red, green, blue;
    public:
        Color() { red = green = blue = 0; }
        Color(int r, int g, int b) { red = r; green = g; blue = b; }
        void setColor(int r, int g, int b) { red = r; green = g; blue = b; }
        void show() { cout << red << ' ' << green << ' ' << blue << endl; }
    };
    int main() {
        Color screenColor(255, 0, 0); // 빨간색의 screenColor 객체 생성
        Color *p; // Color 타입의 포인터 변수 p 선언
        p = &screenColor; // (1) p가 screenColor의 주소를 가지도록 코드 작성
        p->show(); // (2) p와 show()를 이용하여 screenClor 색 출력
        Color colors[3]; // (3) Color의 일차원 배열 colors 선언, 원소는 3개
        p = colors; // (4) p가 colors 배열을 가리키도록 코드 작성
        // (5) p와 setColor()를 이용하여 colors[0], colors[1], color[2]가
        // 각각 빨강, 초록, 파랑색을 가지도록 코드작성
        p[0].setColor(255, 0, 0);
        p[1].setColor(0, 255, 0);
        p[2].setColor(0, 0, 255);
        // (6) p와 show()를 이용하여 colors 배열의 모든 객체의 색 출력. for 문 이용
        for (int i = 0; i < 3; ++i) {
            p[i].show();
        }
    }


    실행결과


    포인터 변수에 객체 주소 지정은 &을 붙여서 사용합니다.


    포인터로 객체 멤버 접근을 하기위해서는 .이 아닌 -> 을 사용합니다.


    (*p).getArea(); 와 p->getArea(); 는 같은 코드입니다.


    객체의 배열 선언은

    클래스 변수명[크기] 로 선언합니다.


    객체 배열 선언무는 반드시 기본 생성자를 호출합니다.

    포인터와 배열은 같기 때문에 (4) 와 같은 코드가 가능합니다.



    'C++' 카테고리의 다른 글

    명품 C++ 4장 3번  (1) 2018.10.29
    명품 C++ 4장 2번  (0) 2018.10.29
    명품 C++ 3장 Open Challenge  (0) 2018.10.29
    명품 C++ 3장 12번  (0) 2018.10.28
    명품 C++ 3장 11번  (0) 2018.10.28

    댓글

© 2018 TISTORY. All rights reserved.