-
명품 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