/*33.cpp*/
#include <iostream>
using std::endl;
using std::cout;
class Point
{
int x_ptr;
int y_ptr;
public:
Point(int _x = 0, int _y = 0){
x_ptr = _x;
y_ptr = _y;
}
void getPoint(){
cout << "X좌표 :" << x_ptr << endl;
cout << "Y좌표 :" << y_ptr << endl;
}
int getX() const {
return x_ptr;
}
int getY() const {
return y_ptr;
}
virtual void draw() const{
cout << "점을 찍었습니다." << endl;
}
};
class Circle : public Point
{
public:
Circle(int _x = 0, int _y = 0) : Point(_x, _y){
}
int getArea() const {
return getX() * getY();
}
void draw() const{
Point::draw(); // A::fct(); 직접명시(추천)
cout << "원을 그렸습니다." << endl;
}
};
class Cylinder : public Circle
{
int height;
public:
Cylinder(int _x = 0, int _y = 0, int _height=0) : Circle( _x , _y){
height = _height;
}
int getVolume() const {
return getArea() * height;
}
void draw() const{
cout << "원기둥을 그렸습니다." << endl;
}
};
int main(){
Cylinder * cyl = new Cylinder(3, 5, 8);
Circle * cir = new Circle(3, 4);
Point * pnt = new Point(1,2);
cir->draw();
cyl->Point::draw(); /*a -> A:fct(); 멤버함수의 스코프를 직접 명시
(비추천 : 강제로 스코프를 지정할 경우 스코프가 변해버리면
전부 다시 바꿔줘야 합니다.) */
system("pause");
return 0;
}