-
명품 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