(15002)
Stack class에서 상속을 받아 데이터가 0 이상인 것만 삽입하고 음수인 경우는 무시하는 PositiveStack class를 만든다.
예를 들어 4 -3 2 1 을 입력한다면 4 2 1 만 입력되어야 한다.
#include <iostream>
using namespace std;
class Stack{
public:
class node{
public:
int data;
node * next;
node(int x, node *nxt):data(x), next(nxt){}
};
Stack(); void insert(int); int pop();
void show();
protected:
node *first;
};
Stack::Stack(){ first = 0; }
void Stack::insert(int x){
node * temp;
temp = new node(x, first);
temp->next = first;
first = temp;
}
int Stack::pop(){
int retval;
node * temp;
if (first==0) return -1;
retval = first->data;
temp = first;
first = first->next;
delete temp;
return retval;
}
void Stack::show(){
node *temp;
for (temp = first; temp; temp = temp->next )
cout << temp->data << " --> ";
cout << "END\n";
}
//class PositiveStack 을 여기에 정의한다.
class PositiveStack :public Stack{
private:
int x;
public:
void insert(int x){
if(x>0){
Stack::insert(x);
}
}
/* 불필요한 override!
void pop(){
Stack::pop();
}
void show(){
Stack::show();
}
*/
};
int main() {
Stack s;
PositiveStack ps;
s.insert(1);
s.insert(2);
s.insert(-3);
s.insert(4);
s.show();
ps.insert(1);
ps.insert(2);
ps.insert(-3);
ps.insert(4);
ps.show();
}
<실행결과>
4 --> -3 --> 2 --> 1 --> END
4 --> 2 --> 1 --> END
'C++ > 상속과 다형성' 카테고리의 다른 글
양수만 삽입하는 stack 구현 (Reuse mechanism: composition) (0) | 2021.01.24 |
---|---|
상속시 상위 메소드의 오버라이드 (0) | 2021.01.23 |