Seuraava esimerkki kuvannee muodostajan (rakentaja) ja hajottajan (hävittäjä) kutsujärjestystä:
/* CONORDER.CPP */ #include <stdio.h> #include <string.h> #include <conio.h> #define RIVEJA 14 class cMalli { int luku; char nimi[10]; static int rivi; // Tulostusrivien laskuri public: cMalli(int i=0, char *s="?") { luku = i; strcpy(nimi,s); tulosta("Rakentaja"); } ~cMalli() { tulosta("Hävittäjä"); } void tulosta(char *s="???") const { rivi++; if (rivi>RIVEJA) gotoxy(40,1+rivi-RIVEJA); else gotoxy(1,1+rivi); printf("%2d %-10s: %-10s %3d\n",rivi,s,nimi,luku); } void vaihda(int i) { luku = i; tulosta("Vaihto");} }; int cMalli::rivi = 0; // ks. luokkamuuttujat int main(void) { clrscr(); printf("--------------------------------------------------------\n"); // rivinro cMalli m1(1,"m1"); // # 1 cMalli *p,*a; cMalli t[3]={ // # 2-4 cMalli(10,"t[0]"),cMalli(11,"t[1]"),cMalli(12,"t[2]") }; { m1.tulosta("Onko muita"); // # 5 cMalli m2(2,"m2"); // # 6 m2.tulosta("Nyt on 2"); // # 7 { cMalli m3(3,"m3"); // # 8 m3.tulosta("Nyt 3"); // # 9 p = new cMalli(4,"*p"); // #10 } // #11 } // #12 a = new cMalli[3]; // #13-15 delete p; // #16 a[1].tulosta("Dyn.taul."); // #17 for (int i=0; i<3; i++) a[i].vaihda( (i+1)*100 ); // #18-20 a[1].tulosta("Dyn.taul."); // #21 delete [] a; // #22-24 return 0; } // #25-28Alla on ohjelman tulostus. Riveihin viitataan ohjelmakoodin kommenteissa:
1 Rakentaja : m1 1 | 15 Rakentaja : ? 0 2 Rakentaja : t[0] 10 | 16 Hävittäjä : *p 4 3 Rakentaja : t[1] 11 | 17 Dyn.taul. : ? 0 4 Rakentaja : t[2] 12 | 18 Vaihto : ? 100 5 Onko muita: m1 1 | 19 Vaihto : ? 200 6 Rakentaja : m2 2 | 20 Vaihto : ? 300 7 Nyt on 2 : m2 2 | 21 Dyn.taul. : ? 200 8 Rakentaja : m3 3 | 22 Hävittäjä : ? 300 9 Nyt 3 : m3 3 | 23 Hävittäjä : ? 200 10 Rakentaja : *p 4 | 24 Hävittäjä : ? 100 11 Hävittäjä : m3 3 | 25 Hävittäjä : t[2] 12 12 Hävittäjä : m2 2 | 26 Hävittäjä : t[1] 11 13 Rakentaja : ? 0 | 27 Hävittäjä : t[0] 10 14 Rakentaja : ? 0 | 28 Hävittäjä : m1 1Mikäli a -taulukon tuhoamisessa ei olisi ollut taulukkomerkintää delete [] a;, ei a:n jokaista alkiota kohti olisi kutsuttu vastaavaa hajottajaa.