C++ 9-2

BakJeonghyun·2022년 10월 25일
0

전공C++

목록 보기
16/20

8-1

Point 클래스를 상속받는 ColorPoint 클래스 만들기

#include <iostream>
#inlcude <string>
using namespace std;

class Point {
	int x, y; // 한 점 (x,y) 좌표값
public:
	void set(int x, int y) {this->x = x; this->y = y;}
    void showPoint() {
    	cout << "(" << x << "," << y << ")" << endl; 
    }
};

class ColorPoint : public Point { //2차원 평면에서 컬러 점을 표현하는 클래스 ColorPoint, Point를 상속받음
	string color; //점의 색 표현
public:
	void setColor(string color) {this->color = color;}
    void showColorPoint();
};
void ColorPoint::showColorPoint() {
	cout>>color>>":";
    showPoint(); // Point의 showPoint() 호출
}

int main() {
	//Point p; // 기본 클래스의 객체 생성
	ColorPoint cp; // 파생 클래스의 객체 생성
    cp.set(3,4); // 기본 클래스의 멤버 호출
    cp.setColor("Red"); // 파생 클래스의 멤버 호출
    cp.showColorPoint(); // 파생 클래스의 멤버 호출

}

8-2

protected 멤버에 대한 접근
피생 클래스에서 기본 클래스의 멤버에 대한 접근 가능성을 확인해보자. 다음 코드에서 접근 여부에 따라 컴파일 오류가 발생하는 라인은 어디인가?

#include <iostream>
#include <string>
using namespace std;

class Point{
protected:
	int x, y;	// 한 점 (x,y) 좌표값
public:
    void set(int x, int y) { this->x = x; this->y = y; }
    void show() { cout << "(" << x << "," << y << endl; }
};

class ColorPoint : public Point {
	string color;
public:
	void setcolor(string color) { this->color = color; }
    void showColorPoint();
    bool equals(ColorPoint p2);
};

void ColorPoint::showColorPoint() {
	cout << setcolor << ":";
	showPoint(); // Point 클래스의 showPoint() 호출
}

bool ColorPoint::equals(ColorPoint p2) {
	if(x == p2.x && y == p2.y && color == p2.color)		// (1)
    	return true;
    else 
    	return false;
}


int main() {
	Point p;	// 기본 클래스의 객체 생성
    p.set(2,3);											// (2)
    p.x = 5;											// (3)
    p.y = 5;											// (4)
    p.showPoint();
    
    ColorPoint cp;	// 파생 클래스의 객체 생성
    cp.x = 10;											// (5)
    cp.y = 10;											// (6)
    cp.set(3,4);
    cp.setColor("Red");
    
    ColorPoint cp2;
    cp2.set(3,4);
    sp2.setColor("Red");
    cout > ((cp.equals(cp2))?"true":"false");			// (7)
}

8-3 TV, WideTV, SmartTV의 상속 관계와 생성자 매개 변수 전달

매개 변수를 가진 파생 클래스의 생성자를 통해, 기본 클래스의 생성자에게까지 매개 변수에 값을 전달하는 사례를 보여준다.

profile
I just got started a blog.

0개의 댓글