C++

명품 C++ 실습문제 5장 8번

Hs’s Coding vlog 2023. 1. 5. 18:47
#include <iostream>
using namespace std;
class MyIntStack{
    int *p;
    int size;
    int tos;
public:

    MyIntStack(int size){//매개생성자 인라인함수로 넣기
        this->p = new int[size];
        this->size = size;
        this->tos = -1;}//인덱스 리턴//매개생성자
    MyIntStack(const MyIntStack &s){//복사 생성자
        int len = s.size;
        this->p = new int[len];
        this->size = len;
        this->tos = s.tos;

        for (int i = 0; i <= tos; i++)
            this->p[i] = s.p[i];
        }//복사 생성자
    ~MyIntStack(){delete [] p;}
    bool push(int n){
        if (tos >= 9) return false;
        p[++tos] = n;
        return true;}//정수 n을 스택에 푸시한다.스택 꽉차있으면 false,아니면 true리턴
    bool pop(int &n){
        if (tos < 0) return false;
        n = p[tos--];
        return true;}//스택에 탑에 있는값을 n에 팝한다.
};
int main() {
    MyIntStack a(10);
    a.push(10);
    a.push(20);
    MyIntStack b =a; //복사 생성
    b.push(30);
    
    int n;
    a.pop(n); //스택a팝
    cout << "스택 a에서 팝한 값 " << n  << endl;
    b.pop(n);//스택 b팝
    cout << "스택 b에서 팝한 값 " << n << endl;
    return 0;
}

'C++' 카테고리의 다른 글

명품 C++ 실습문제 5장 12,12-1번  (2) 2023.01.05
명품 C++ 실습문제 5장 10번  (0) 2023.01.05
명품 C++ 실습문제 5장 7번  (0) 2023.01.05
명품 C++ 실습문제 5장 6번  (0) 2023.01.05
명품 C++ 실습문제 5장 5번  (0) 2023.01.05