// @topic T060720 Stack of integers v2
// @brief Stack class declaration with copy constructor and destructor

#ifndef STACK_H_INCLUDED_
#define STACK_H_INCLUDED_

#include <iostream>

class Stack {
    static const int DEFAULT_CAPACITY = 1024;
    int* stack_memory;
    int capacity;
    int top_pos;
public:
    // constructors/destructor
    Stack();
    Stack(int initial_capacity);
    Stack(Stack const& other);
    ~Stack(); // destructor

    // stack operations
    void push(int value);
    void pop();
    int top() const;
    int& top();
    int size() const;
};// class Stack

#endif //STACK_H_INCLUDED_