Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++

Destruktor

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wofür Sie den Destruktor benötigen und wie Sie diesen richtig einsetzen, erfahren Sie vom Trainer in diesem Film.

Transkript

Neben dem Konstruktor, konstruieren hei0t ja irgendwie aufbauen, gibt es auch einen Destruktor. Destrukt, to destruct heißt eigentlich zerstören. Das brauche ich nämlich wenn die Variabel, die ich mit einer Klasse definieret habe wieder zerstört wird, also nicht mehr gebraucht wird oder mit Delete entsprechend gelöscht wird, dann wird er aufgerufen und das brauche ich zum Beispiel zur Freigabe von Speicherbereichen. Und ich habe jetzt hier mal ein Beispiel vorbereitet, was sowas braucht. Eine Klasse, nenne ich sie array classes, wie Feldklasse von mir aus, Die hat einen Pointer auf ein Feld, also auf ein Integer eigeltlich erstmal und ein Integer der die Größe angibt size genannt. Im public Bereich haben wir jetzt mal die verschiedenen Möglichkeiten an der drauf zuzugreifen. Erstmal brauche ich ein Eonstruktor. Hier muss ich einen Konstruktor angeben mit einer Größenangabe, ein Konstruktor ohne Klammern macht jetzt nicht so wahnsinnig viel Sinn, es sei denn man würde hier ein Feld mit einer festgelegten Anzahl von Elementen immer anlegen wollen, also als Parameter-size, dann mache ich hier ein ara=new int von size, damit lege ich ein Feld an von Integer mit ara als Pointer speichere ich das hier oben ab, merke mir das Size, das ist wichtig, und ich initialisiere das Feld hier gleich mit dem Wert 0, damit es auch ein definierten Wert hat. Hier kommt jetzt die Definition des Destruktors, das ist dieses kleine Schlange was davor steht, sonst muss ich den gleichen Namen nehmen wie oben bei der Konstrukterdefinition, nämlich ~arrays_cls. Die Definition kommt dann später, nämlich über den genauen Inhalt dieser Methode. Nun, dann haben wir hier noch ein paar sinnvolle Methoden zum Beispiel zur Ausgabe des Feldes, da gebe ich einfach alle Feldelemente aus und ich möchte auch irgendwas setzen können, das mache ich hier, indem ich einen Index angebe und einen Wert und hier kann ich eben ganz brav gleich die Feldgrenzen prüfen und garantieren,dass wenn man was zuweist, egal was ich da hinschreibe, dass es dann keine Fehlermeldung gibt. Hier außerhalb von der Klassendefinition, definiere ich den Destruktor, den Konstruktor haben wir ja schon definiert: arrays_cls :: ~ arrays_cls, das ist der Destruktor. Und was soll er machen? Das ist jetzt ganz easy: Delete ara und man könnte hier noch braverweise size auf 0 setzen aber ist eigentlich unsinn, weil der Destructor ja sowieso die ganze Klasse vernichtet, also kann ich daher sowieso nicht mehr auf size zugreifen. Also egal, man könnte es noch so rum machen, das würde noch ein gewissen Sinn geben im Multithreading zum Beispiel, wenn doch noch jemand zugreift bevor das Ding weg ist. Na ja ein bisschen schwierig so. Wie gesagt delete ara würde in dem Fall aber ausreichen, also kommentiere ich das mal weg, weil es so an dieser Stelle auch nicht wirklich Sinn macht, aber Sie wissen schon, dass man sich da mal Gedanken drüber machen muss. Gut, jetzt kommen wir mal zum Hauptprogramm. das ist eigentlich jetzt ganz easy. Ich deklariere oder definiere jetzt in dem Fall, wie gesagt ich verwechsele Deklaration und Definition auch dauernd. Deklaration gibt mir noch kein Werte vor, die Definition aber hier den Namen des Feldes im ara mit 10 Elementen, dann möchte ich das ausgeben, ich möchte einen Wert umbelegen auf 123 und dan gebe ich es wieder aus und das schauen wir mal, das ist das 4. Element von 0 bis 3 wenn man zählt. Sie sehen schon hier unten habe ich 0123, hier habe ich jetzt den neuen Wert gesetzt, ansonsten kommt hier einfach 0 raus als Ergebnis, aber Sie sehen schon, da haben wir irgenwas komisches noch an der Geschichte, da müssen wir noch gleich mal nachschauen, Statusnummer, ich habe hier eigentlich 123 gesetzt, sehe ich aber hier gar nicht. Was gebe ich denn da um himmels Willen aus, da müssen wir hier mal bisschen drauf gucken bei der Ausgabe das sieht ja eigenlich gar nicht so schlecht aus. Ich gebe ja eigentlich hier das Feldelement ara [i], also kann der Fehler eigentlich nur hier liegen. Hier ist er auch in der Tat, hier nehme ich den Wert Value, Ich setze aber gemeinerweise nicht den Value,sondern i , das ist ein kleiner Tippfehler, den ich da schonmal gemacht hatte und jetzt probieren wir das Ganze nochmal, dann sollte das auch richtig funktionieren, jetzt steht auch der Wert da, den ich da reinschreibe. Nun Sie sehen schon, das ist auch ganz praktisch, wenn man Fehler macht sind die auch schön brav in der Klassendefinition enthalten oder zumindest in der Nähe, und nicht irgendwelche Seiteneffekte der auftauchen, das ist eigentlich hier eine saubere Programmierart und -weise, hier konnte der Fehler ja nicht liegen, der Aufruf war ja zum Beispiel in Ordnung. Wenn ich aber irgendwie das Ganze zuweise, ist es immer ein bisschen unkontrolliert, also auch für ein sicheres Programmieren ist diese ganze Klassengeschichte sehr hilfreich.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!