new / delete
-
otze schrieb:
mit new is es aber viel viel schöner
was soll bitte daran so schön sein?
-
wenn du die klasse über einen basiszeiger-und idealerweise über ein interface-verwaltest,brauchst du eigentlich die abgeleitete Klasse nicht zum direkt aufrufen,weil ja das interface diese aufgaben perfekt erledigen sollte.darum sollte man sich dieses zusätzliche objekt im code sparen, und direkt mit new instanzieren.hat den vorteil der übersichtlichkeit, und ein übersichtlicher code ist gleich viel schöner.
aber das is wie gesagt nur meine meinung,und für den fall das ich ganz falsch liegen sollte bin ich ja noch lernfähig
-
Hallo,
das versteh ich irgendwie nicht. Hast du mal ein Beispiel?
-
CarstenJ schrieb:
Hallo,
das versteh ich irgendwie nicht. Hast du mal ein Beispiel?
das würde dann so aussehen:
struct A { virtual void foo1() = 0; virtual void foo2() = 0; virtual void foo3() = 0; }; //Implementierung class B : public A { //viele Methoden, die man nicht braucht //auch unübersichtlich }; A* p = new B;
zumindest zum Teil hat er recht
-
ganz einfach:
//ohne new B b; A* a = &b; //mit new und angepasstem interface A* a=new B; a->Release;//alternativ delete a //objekt is aufm heap man kann also seine existenzdauer selber bestimmen, //desweiteren gibts kein b objekt, man kann das interface also nicht (ausversehen)umgehen.
-
Ah, jetzt weiss ich was du meinst. Danke.
-
otze schrieb:
aber das is wie gesagt nur meine meinung,und für den fall das ich ganz falsch liegen sollte bin ich ja noch lernfähig
Lies meinen Beitrag.
Es sind einfach 2 verschiedene Sachen. Die nun wirklich nix miteinander zu tun haben. Einzige Gemeinsamkeit: man hat einen 'polymorphen' Zeiger.
-
wie heissen denn in der fachsprache basisklassenzeiger die auf eine Klasse im stack bzw heap zeigen(nur damit ich nicht nochmal in das fettnäpfchen tret :))?
-
Danke für die schnelle und Zahlreiche Hilfe, jetzt hab ich das auch verstanden, mein Buch hat das nicht so gut rüber gebracht
-
Hallo,
otze schrieb:
wie heissen denn in der fachsprache basisklassenzeiger die auf eine Klasse im stack bzw heap zeigen
das sind einfach Basisklassenzeiger, mehr nicht, es gibt keinen spezielleren Fachbegriff, nur um Heap- oder Stack-Platzierungen mit Basisklassenzeigern zu verbinden.
MfG