(15004)
Stack class의 instance를 내부 변수(포인터)로 선언하여 데이터가 양수인 경우만 삽입하는 PositiveStack 을 만든다.
#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:
PositiveStack(){
data_=new Stack;
}
~PositiveStack(){
delete data_;
}
void insert(int x){
if(x>0){
data_->insert(x);
}
}
void pop(){
data_->pop();
}
void show(){
data_->show();
}
private:
Stack *data_;
};
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();
}
'C++ > 상속과 다형성' 카테고리의 다른 글
양수만 삽입하는 stack 구현 (Reuse mechanism: inheritance) (0) | 2021.01.24 |
---|---|
상속시 상위 메소드의 오버라이드 (0) | 2021.01.23 |