Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #ifndef _STACK
  2. #define _STACK
  3. template <class T>
  4. class Stack {
  5.    
  6.     public:
  7.         Stack();
  8.         Stack(const int &num);
  9.         Stack(const Stack<T> &obj);
  10.         Stack& operator=(const Stack<T> &obj);
  11.         ~Stack();
  12.  
  13.     private:
  14.         T * buffer;
  15.         unsigned int actualSize;
  16.         unsigned int maxSize;
  17. };
  18. template <class T>
  19. Stack<T>::Stack() : maxSize(5), actualSize(0), buffer(new T[5]) {};
  20.  
  21. template <class T>
  22. Stack<T>::Stack(const int &num) : maxSize(num), actualSize(num), buffer(new T[num]) {};
  23.  
  24. template <class T>
  25. Stack<T>::Stack(const Stack<T> &obj) {
  26.     this->actualSize = obj.actualSize;
  27.     this->maxSize = obj.maxSize;
  28.     std::copy(obj.buffer, obj.buffer + obj.actualSize, this->buffer);
  29. }
  30.  
  31. template <class T>
  32. Stack<T>&  Stack<T>::operator=(const Stack<T> &obj) {
  33.     T * temp = new T[obj.actualSize];
  34.     std::copy(obj.buffer, obj.buffer + obj.actualSize, temp);
  35.     this->actualSize = obj.actualSize;
  36.     this->maxSize = obj.maxSize;
  37.     delete[] buffer;
  38.     buffer = temp;
  39.     return *this;
  40. }
  41.  
  42. template <class T>
  43. Stack<T>::~Stack() {
  44.     delete[] buffer;
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement