문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.

 

1. 문제

 

1. 다음 코드가 실행되도록 Circle을 상속받은 NameCircle 클래스를 작성하고 전체 프로그램을 완성하라.

 

 

2. 결과

 

 

 

3. 코드

 


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

class Circle {
	int radius;
public :
	Circle(int radius=0) { this->radius = radius; }
	int getRadius() { return radius; }
	void setRadius(int radius) { this->radius = radius; }
	double getArea() { return 3.14*radius*radius; }
};

class NamedCircle : protected Circle {
	string name;
public :
	NamedCircle(int radius, string name) : Circle( radius ) {
		this->name = name;
	}
	void show() { cout << "반지름이 " << getRadius() << "인 " << name << endl; }
};

int main() {
	NamedCircle waffle(3, "waffle" );
	waffle.show();
}

 

 

4. 설명

 

Circle 클래스를 상속받은 NamedCircle 클래스를 작성합니다.

 

NamedCircle 클래스는 원의 이름을 저장하는 string 변수 name을 가집니다.

 

 

생성자를 보면 보통 생성자를 작성할 때와 달리 ": Circle( radius )" 가 추가되어 있습니다.

 

이것은 부모 클래스의 생성자 Circle( int radius )를 실행하도록 합니다. 

 

만약 이 문장이 추가되지 않았을 시 Circle 클래스의 기본 생성자를 가리키게 되어서, NamedCircle 생성자에 있는 매개변수 radius의 어떤 값이 입력되어도 radius의 값은 0이 되어 버립니다.

 

 

 

 

 

 

+ Recent posts