30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

9.3.2 Konstruktoren und Destruktoren<br />

9.3 Abgeleitete Klassen 215<br />

Bei den e<strong>in</strong>fachen Klassen wurde bereits besprochen, dass beim Erzeugen e<strong>in</strong>es<br />

Objekts der Konstruktor aufgerufen wird und bei dessen Zerstörung der<br />

Destruktor. Bei abgeleiteten Klassen, egal ob mittels E<strong>in</strong>fach- oder Mehrfachvererbung,<br />

s<strong>in</strong>d nun zwangsweise mehrere Konstruktoren und Destruktoren<br />

im Spiel, denn alle Klassen <strong>in</strong> der Ableitungshierarchie besitzen solche.<br />

Wie diese Konstruktoren und Destruktoren nun <strong>in</strong>tern behandelt und aufgerufen<br />

werden, betrachten wir am besten gleich an e<strong>in</strong>em simplen Beispiel<br />

(derived_constr_destr_demo.cpp):<br />

1 // derived constr destr demo . cpp − demo program to show what<br />

2 // happens with c o n s t r u c t o r s and d e s t r u c t o r s <strong>in</strong> derived c l a s s e s<br />

3<br />

4 #<strong>in</strong>clude <br />

5<br />

6 us<strong>in</strong>g std : : cout ;<br />

7 us<strong>in</strong>g std : : endl ;<br />

8<br />

9 class RootClass<br />

10 {<br />

11 public :<br />

12 RootClass ( ) ;<br />

13 ˜RootClass ( ) ;<br />

14 } ;<br />

15<br />

16 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

17 class DerivedClassLevelOne : public RootClass<br />

18 {<br />

19 public :<br />

20 DerivedClassLevelOne ( ) ;<br />

21 ˜ DerivedClassLevelOne ( ) ;<br />

22 } ;<br />

23<br />

24 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

25 class DerivedClassLevelTwo : public DerivedClassLevelOne<br />

26 {<br />

27 public :<br />

28 DerivedClassLevelTwo ( ) ;<br />

29 ˜DerivedClassLevelTwo ( ) ;<br />

30 } ;<br />

31<br />

32 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

33 RootClass : : RootClass ( )<br />

34 {<br />

35 cout

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!