상품과 할인 상품 - 상속과 다형성 실습
//상속과 다형성 실습1(상품과 할인 상품)
#include <string>
#include <iostream>
using namespace std;
class Product
{
string name;
int price;
public:
Product(string name,int price) //생성자
{
SetName(name);
SetPrice(price);
}
virtual int GetPrice()const //가격접근자 가상 메서드
{
return price;
}
string GetName()const //이름접근자
{
return name;
}
virtual void Print()const//정보 출력 가상 메서드
{
cout<<name<<" 판매가격: "<<GetPrice()<<endl;
}
private:
void SetPrice(int price) //가격설정자
{
this->price = price;
}
void SetName(string name) //이름설정자
{
this->name = name;
}
};
class DiscountProduct:
public Product
{
int discount;
public:
DiscountProduct(string name,int price,int discount)
:Product(name,price) //기반 클래스에 기본 생성자를 제공하지 않을 때 초기화 구문 사용
{
SetDiscount(discount);
}
int GetDiscount()const //할인율 접근자
{
return discount;
}
virtual int GetPrice()const //가격 접근자 재정의
{
int origin_price = Product::GetPrice();
int dc = origin_price * discount/100;
return origin_price - dc;
}
virtual void Print()const //정보 출력 메서드 재정의
{
cout<<"상품가격:"<<Product::GetPrice()<<" 할인율:"<<discount<<" ";
Product::Print();
}
private:
void SetDiscount(int discount) //할인율 설정자
{
this->discount = discount;
}
};
int main (void)
{
Product *p1 = new Product("치약",3000);
Product *p2 = new DiscountProduct("칫솔",3000,15);
p1->Print();
p2->Print();
delete p1;
delete p2;
return 0;
}
* 디딤돌 C++ 39. 상속과 다형성 실습1에서
'C++ > 디딤돌 C++' 카테고리의 다른 글
상속과 다형성 실습-학생, 마법학생, 운동학생, 학사학생[C++] (0) | 2016.05.15 |
---|---|
상속과 다형성 실습(도형, 점, 선, 면적, 사각형) [디딤돌 C++] (0) | 2016.05.14 |
기본 형식 간에 static_cast [디딤돌 C++] (0) | 2016.04.17 |
static_cast [디딤돌 C++] (0) | 2016.04.17 |
static_cast 를 할 수 없는 예 [디딤돌 C++] (0) | 2016.04.17 |