class instanzen



  • na das doch super! wieso macht man dann sooft den komplizierten weg mit new (siehe instanze3)? ist doch dann total unpraktisch, da man sich um das delete kümmern muss.

    Es kann ja sein, dass du das Objekt auch nach verlassen der Funktion noch brauchst.



  • Abgesehen davon ist Polymorphismus auch ohne Zeiger und new nicht möglich.

    Hey, das ist gemein. Nicht verarschen! 😡

    class Basis {
    public:
       virtual void foo () const { cout << "Foo\n"; }
    };
    
    class Derivat : public Basis {
    public:
       virtual void foo () cosnt { cout << "Bar\n"; }
    };
    
    void func (cosnt Basis & objekt)
    {
       objekt.foo ();
    }
    
    int main ()
    {
       Bar bar;
       func (bar);
    }
    

    kein Zeiger, kein new, aber polymorph.



  • Hey, das ist gemein. Nicht verarschen!

    Du musst ja auch Leuten die Zeit geben, den Beitrag zu überdenken....Kann ja nicht wissen, dass du 0.24 Sekunden nach meinen Beitrag direkt eine Antwort darauf verfasst.



  • anfänger01 schrieb:

    instanze1 wird nach eurem gesagtem automatisch gelöscht.
    na das doch super! wieso macht man dann sooft den komplizierten weg mit new (siehe instanze3)? ist doch dann total unpraktisch, da man sich um das delete kümmern muss.
    oder gibts da was geheimes was man wissen müsste?

    manchmal ist es eben so, dass du selbst bestimmen möchtest, wie lange deine objekte leben. wenn sie auf dem stack liegen, dann existieren sie auch nur solange, bis das aktuelle scope verlassen wird:

    void foo () {
      MyClass x; //hier wird x erzeugt
    } //hier wird x vernichtet
    
    void bar () {
      MyClass a; //a erzeugt
      {
         MyClass b; //b erzeugt
         MyClass c; //c erzeugt
      } //zuerst c vernichtet, dann b vernichtet
    } //a vernichtet
    

    wenn du aber zb ein objekt aus so einer funktion per referenz oder zeiger zurückgeben willst, bleibt dir nicht viel übrig, außer es mit new anzulegen.

    Allerdings gibt es ein paar tricks, die das leben mit new vereinfachen, nämlich smart pointer. also intelligente zeiger, die zb das, worauf sie zeigen automatisch löschen, wenn es keinen anderen (smart)zeiger mehr darauf gibt.
    Standard C++ bietet hier nur auto_ptr an, aber andere libs wie zb boost noch mehr.

    achja noch ne frage
    myCLASS instanz1x;
    myCLASS instanz2x;

    das sind 2 eigentständige objekte ja?

    ja.



  • @CarstenJ: Du sollst Anfänger nicht verarschen, in dem du irgendwas erzählst, was gar nicht stimmt. Das meine ich!

    /edit: musste ein @ einfügen, weil jemand meinte sich zwischendrängeln zu mussen 😉

    /edit2: Na toll, durch Carstens Editieren ist die Antwort jetzt irgendwie sinnlos geworden.



  • Der Vorteil von Pointern bzw. die Instanzierung mit new ist auch, das du die Objekte nur dann anlegst, wenn du sie wirklich brauchst. Und somit existieren sie auch außerhalb eines Gültigkeitsbereiches.

    Natürlich muß man nicht immer new benutzen, wenn man es nicht braucht. Aber man kommt halt auch nicht ohne aus.



  • Och Helium, komm mal wieder runter. Ich habs direkt geändert, nachdem ich das gesendet habe. War bestimmt nicht meine Absicht, irgendwen zu verarschen, also halt einfach mal den Ball flach!!



  • Du musst ja auch Leuten die Zeit geben, den Beitrag zu überdenken....

    Durch das 😡 sieht das ganze auch viel böser aus, als es gemeint war.

    Kann ja nicht wissen, dass du 0.24 Sekunden nach meinen Beitrag direkt eine Antwort darauf verfasst.

    Nicht jeder ist so langsam, wie du :p

    (letzteres nicht ernst gemeint)



  • boah danke schön! super erklärt und super verstanden.
    ich empfehle euch weiter 😉



  • Jo, es fehlt noch die Möglichkeit, andere Poster zu blocken, während man schreibt, damit nicht so ein Durcheinander ensteht und keiner mehr weiss, wer auf wen, wann und wieso geantwortet hat.... 🕶



  • Darf ich die Herrschaften dezent auf die Vorschau-Funktion hinweisen ...



  • Ich habe laut CarstenJs Aussage doch erst 0.24 Sekunden nach ihm geantwortet (wie sonst sollte es eine Antwort sein). Inwiefern hätte einer von uns von der Vorschaufunktion profitieren können?



  • Er hätte sein Posting nicht gleich absetzen müssen, wenn er es noch überdenken muss.



  • [EDIT]Davie hatte es schon genannt, ging um auto_ptr[/EDIT]

    MfG Max



  • std::auto_ptr ist Standard-C++ und ist ein Smartpointer.



  • Jo, das kommt davon wenn man den Thread nicht ganz durchliest 🙄 ,
    danke.

    MfG Max



  • Bashar schrieb:

    Er hätte sein Posting nicht gleich absetzen müssen, wenn er es noch überdenken muss.

    ...ist lieb von dir, dass du mich nochmal drauf hinweist.



  • Bedank dich bei Helium.


Anmelden zum Antworten