C++/디딤돌 C++

상품과 할인 상품 - 상속과 다형성 실습 [디딤돌 C++]

언제나휴일 2016. 4. 17. 01:09
반응형

상품과 할인 상품 - 상속과 다형성 실습

상품과 할인 상품 - 상속과 다형성 실습

//상속과 다형성 실습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++  소개 바로가기

반응형