Hello, I'm trying to push and pop a stack with a class and output the results but there seems to be something wrong with my code. Any Ideas? I'm trying to keep it simple. I'm thinking I don't need the showElements but I want some way of display the results being pushed then popped...

Code:
#include<iostream>
using namespace std;

class stack{

private:
  int stackArray[10];
  int top;
public:
  void showElements();  
  void push(int x);
  int pop();
  int showTop();
  stack();
  ~stack();
};

stack::stack(){

  top = 0;
  stackArray[10] = 0;
}

stack::~stack(){
}

void stack::push(int x){

  stackArray[top] = x;
  top ++;
}

int stack::pop(){

  int x = stackArray[top];
  return x;

  top--;
  
}

int stack::showTop(){

  return top;

}

void stack::showElements(){

for(int i = 0; i < top; i ++){
    cout<<stackArray[i]<<endl;
 }

}

int main(){

  stack _s;
  int val;
  _s.push(7);
  _s.push(5);
  _s.push(3);
  cout <<"Push: " <<  _s.showTop() << endl;
  _s.showElements();
  val=_s.pop();
  cout <<"Pop: " << val << endl;
   _s.showElements();

  return 0;
}