Già ma prova così:
Evidentemente il istruttore viene chiamato solo per allocazioni nello heap e non nello stack di sistema, (non lo sapevo neanche io confesso)codice:#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 *a, *b; // crea due oggetti della classe stack a = new stack(); b = new 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"; delete a; delete b; return 0; }