Sto studiando i distruttori e costruttori e ho il seguente programma relativo a una semplice applicazione agli stack:

Codice PHP:
#include <iostream>
using namespace std;

#define SIZE 100
// Creazione della classe stack.

class stack 
  
int stck[SIZE];
  
int tos;
public:
  
stack();  // costruttore
  
~stack(); // distruttore
  
void push(int i);
  
int pop();
};

// costruttore dello stack
stack::stack()
{
  
tos 0;
  
cout << "Stack inizializzato\n";
}

// distruttore dello stack
stack::~stack()
{
  
cout << "Stack distrutto\n";
}


void stack::push(int i)
{
  if(
tos==SIZE) {
    
cout << "Stack esaurito.\n";
    return;
  }
  
stck[tos] = i;
  
tos++;
}

int stack::pop()
{
  if(
tos==0) {
    
cout << "Stack vuoto.\n";
    return 
0;
  }
  
tos--;
  return 
stck[tos];
}


int main()
{
  
stack ab;  // crea due oggetti della classe stack

  
a.push(1);
  
b.push(2);

  
a.push(3);
  
b.push(4);

  
cout << a.pop() << " ";
  
cout << a.pop() << " ";
  
cout << b.pop() << " ";
  
cout << b.pop() << "\n";
  
  
system("PAUSE");
  return 
0;

L'esecuzione del programma dovrebbe darmi:
Stack inizializzato
Stack inizializzato
3 1 4 2
Stack distrutto
Stack distrutto

Invece mi da:
Stack inizializzato
Stack inizializzato
3 1 4 2


Che cosa ho sbagliato???secondo voi???