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.

178 9. Klassen <strong>in</strong> <strong>C++</strong><br />

h<strong>in</strong>ter sich hat, also beim Verlassen des Blocks durch das return Statement<br />

<strong>in</strong> Zeile 20.<br />

Um das Testprogramm ordnungsgemäß übersetzen zu können, müssen<br />

die beiden C ++ Source Files compiliert und die resultierenden Object-Files<br />

zu e<strong>in</strong>em Executable gel<strong>in</strong>kt werden. Dass es nicht so toll ist, dies “zu Fuß”<br />

zu machen, versteht sich von selbst. Dementsprechend wird das Tool make<br />

mit dem folgenden Makefile verwendet (MemoryGameCardTestMakefile):<br />

1 OBJS = memory game card test . o \<br />

2 memory game card . o<br />

3 CC = g++<br />

4 LD = g++<br />

5 EXTRA CCINCLUDES =<br />

6 CC FLAGS = −c $ (EXTRA CCINCLUDES) −Wall<br />

7 EXTRA LIBDIRS =<br />

8 EXTRA LIBS =<br />

9 EXECUTABLE = memory game card test<br />

10 LD FLAGS = −o $ (EXECUTABLE) $ (EXTRA LIBDIRS) $ (EXTRA LIBS)<br />

11<br />

12 memory game card test : $ (OBJS)<br />

13 $ (LD) $ (LD FLAGS) $ (OBJS)<br />

14<br />

15 memory game card test . o : memory game card test . cpp \<br />

16 memory game card . h<br />

17 $ (CC) $ (CC FLAGS) memory game card test . cpp<br />

18<br />

19 memory game card . o : memory game card . cpp \<br />

20 memory game card . h<br />

21<br />

22 a l l : memory game card test<br />

23<br />

24 clean :<br />

25 rm $ (OBJS) $ (EXECUTABLE)<br />

Lesern, denen die Funktionsweise von make und das Erstellen von Makefiles<br />

nicht geläufig ist, möchte ich kurz die Lektüre von Kapitel 15 aus <strong>Softwareentwicklung</strong><br />

<strong>in</strong> C empfehlen. Dort werden alle notwendigen Schritte genau<br />

diskutiert.<br />

Wenn alles glatt gegangen ist und wir das Programm starten, dann<br />

beglückt es uns mit folgendem, unglaublich tollen Output:<br />

t e s t c a r d a f t e r construction : Symbol A<br />

t e s t c a r d a f t e r changeSymbol : Symbol B<br />

9.2.1 Konstruktor und Destruktor genauer beleuchtet<br />

Da die Aufrufe des Konstruktors und des Destruktors vom Compiler implizit<br />

e<strong>in</strong>gesetzt werden, möchte ich an dieser Stelle etwas Licht auf die Vorgänge<br />

h<strong>in</strong>ter den Kulissen werfen. Sehen wir uns dazu e<strong>in</strong>mal ganz kurz den Lebenszyklus<br />

e<strong>in</strong>er beliebigen Variable an:

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!