문제 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이 되어 버립니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 8장 3번 (0) | 2019.04.22 |
---|---|
명품 C++ programming 실습문제 8장 2번 (0) | 2019.04.22 |
명품 C++ programming 7장 Open Challenge (0) | 2019.04.18 |
명품 C++ programming 실습문제 7장 9번, 10번 (0) | 2019.04.17 |
명품 C++ programming 실습문제 7장 7번, 8번 (0) | 2019.04.17 |