ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 7장 11번
    C++ 2018. 11. 3. 14:44

    11. 스택 클래스 Stack을 만들고 푸시(push)용으로  << 연산자를, 팝(pop)을 위해 >> 연산자를, 비어 있는 스택인지를 알기 위해 ! 연산자를 작성하라. 다음 코드를 main()으로 작성하라.


    소스코드


    #include <iostream>
    using namespace std;
    class Stack {
        int *p;
        int tos;
    public:
        Stack() { p = new int[10]; tos = -1;}
        ~Stack() { delete[] p; }
        Stack& operator<<(int x);
        Stack& operator>>(int &x);
        bool operator!();
    };
    Stack& Stack::operator<<(int x) {
        ++tos;
        p[tos] = x;
        return *this;
    }
    Stack& Stack::operator>>(int &x) {
        x = p[tos];
        --tos;
        return *this;
    }
    bool Stack::operator!() {
        if (tos == -1) return true;
        else return false;
    }
    int main() {
        Stack stack;
        stack << 3 << 5 << 10;
        while (true) {
            if (!stack) break;
            int x;
            stack >> x;
            cout << x << ' ';
        }
        cout << endl;
    }


    실행결과



    << >> 연산자 중복에서는 참조를 리턴해야합니다. 그래서 참조변수를 이용해 pop한 값을 가져옵니다.

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

    명품 C++ 7장 Open Challenge  (0) 2018.11.03
    명품 C++ 7장 12번  (0) 2018.11.03
    명품 C++ 7장 10번  (0) 2018.11.03
    명품 C++ 7장 9번  (0) 2018.11.03
    명품 C++ 7장 8번  (0) 2018.11.03

    댓글

© 2018 TISTORY. All rights reserved.