상속을 이용한 프로그램
Programming/C++ 2012. 6. 21. 05:02 |정사각형을 의미하는 Square 클래스와 직사각형을 의미하는 Rectangle 클래스를 정의한다. 그런데 정사각형은 직사각형의 일종이므로, 아래와 같은 클래스의 상속관계가 이루어진다.
정사각형 is a 직사각형
책을 의미하는 Book 클래스와 '전자 책'을 의미하는 EBook 클래스를 정의한다. 그런데 '전자 책'도 '책'의 일종이므로, 아래와 같은 형태로 클래스의 상속관계를 가진다.
전자 책 is a 책
#include <iostream>
#include <cstring>
using namespace std;
class Book
{
private:
char* title;
char* isbn;
int price;
public:
Book(char* title, char* isbn, int price)
:price(price)
{
this->title = new char[strlen(title)+1];
this->isbn = new char[strlen(isbn)+1];
strcpy(this->title, title);
strcpy(this->isbn, isbn);
}
void ShowBookInfo(void) const
{
cout<<"제목: "<<title<<endl;
cout<<"ISBN: "<<isbn<<endl;
cout<<"가격: "<<price<<endl;
}
~Book()
{
delete []title;
delete []isbn;
}
};
class EBook :public Book
{
private:
char* DRMKey;
public:
EBook(char* title, char* isbn, int price, char* key)
:Book(title, isbn, price)
{
DRMKey = new char[strlen(key)+1];
strcpy(DRMKey, key);
}
void ShowEBookInfo(void) const
{
ShowBookInfo();
cout<<"인증키: "<<DRMKey<<endl;
}
~EBook()
{
delete []DRMKey;
}
};
int main(void)
{
Book book("Houdini Book", "123", 15000);
book.ShowBookInfo();
cout<<endl;
EBook ebook("Houdini E-Book", "456", 12000, "asdf");
ebook.ShowEBookInfo();
return 0;
}
'Programming > C++' 카테고리의 다른 글
상속과 다형성 (0) | 2012.06.23 |
---|---|
Control 클래스 & Entity 클래스 (0) | 2012.06.22 |
상속을 위한 조건 (0) | 2012.06.19 |
protected 선언과 세 가지 형태의 상속(public, protected, private) (0) | 2012.06.13 |
상속(inheritance) (0) | 2012.06.06 |