Vereebung



  • @ycbm

    Cruiser ist an inaccessible base of Porsche

    Du zeigst nicht den echten Code.



  • Tatsache hab wohl rumprobiert und das Public nicht wieder reingeschrieben. Danke!

    Wollte noch was fragen bei der Ausgabe fällt mir auf, dass wohl immer wenn ein Erbendes Objekt erstellt wird, auch ein Objekt der vererben den Klasse erstellt wird. Wie wird das in professionellen Projekten gehandhabt ich meine das geht doch voll auf den Speicher. Wird dann aus dem Erbenden Objekt mit ach und Krach noch was gemacht oder einfach gelassen?



  • @ycbm sagte in Vereebung:

    auch ein Objekt der vererben den Klasse erstellt wird

    Nein! Es wird ein Objekt erzeugt. Wie kommst du darauf.



  • Der Code erstellt zwei Objekte aber die Ausgabe sagt
    Auto wurde erstellt
    Auto wurde erstellt
    Porsche..
    Also zwei Mal auto(cruiser)



  • @ycbm

    Porsche ist ein Auto und auch der Auto-Teil muss konstruiert werden.



  • @ycbm Ein Porsche ist ein Auto oder anders ausgedrückt, ein Porscheobjekt besteht aus einem Autoobjekt plus den Porscheteilen. Du solltest das noch mal in deinem Lernmaterial nachlesen.



  • @ycbm Du musst unterscheiden zwischen vollständigen "object" und einem "subobject".
    Wenn du einen Porsche baust, gibt es nur ein vollständiges "object", nämlich den Porsche. Und kein davon unabhängiges Auto.

    Ein integraler Bestandteil des Porsche ist aber ein "subobject" vom Typ Auto. Dieses ist in einem untrennbaren Verbund mit dem Porsche, der Porsche und das "in" ihm enthaltene Auto sind ein "object".



  • Ok eine noch. )

    Bei

    class bla Abstract {
    
    Public:
    
    Void bla () = 0 {}
    

    Wird die Klasse doch zwei mal unnötig Abstract gemacht oder?

    Einmal mit dem Wort Abstract (dass man eigentlich nur bei .net verwendet)
    Und einmal das = 0;

    Beide Sachen sorgen doch dafür, dass man kein Objekt dieser Klassen erstellen kann?



  • @ycbm sagte in Vereebung:

    dass man eigentlich nur bei .net verwendet

    Keine Ahnung. Oben steht C++ (alle ISO-Standards)



  • @ycbm sagte in Vereebung:

    Dein Code ist kein gültiges C++.

    class Porsche auto;

    wäre möglich, nur dass das dasselbe wäre wir Porsche auto;, also eine Variable vom Typ Porsche namens auto.

    Mit class bla Abstract { }; erzeugst (und initialisierst) du eine Variable "Abstract" vom Typ "bla".

    Public mit großem P und Void mit V sind auch keine C++-Schlüsselwörter. (Abstract, egal ob mit A oder a, auch nicht)



  • @ycbm Du musst das alles ein wenig genauer machen. public und void sind in C++ Keywords, Public und Void nicht.
    Ebenso gibt es kein Keyword Abstract. Aber in dem Fall ist auch die klein geschriebene Variante abstract kein Keyword.
    Weiters kann man eine "virtual pure" Funktion zwar durchaus implementieren, aber nicht innerhalb der Klassendefinition. Das muss, warum auch immer, ausserhalb der Klassendefinition passieren.

    D.h. dein Code ist voll von Fehlern und Quatsch.

    Woher sollen wir nun wissen was du meinst? Und wenn wir nicht wissen können was du meinst, wie sollen wir dann die Frage beantworten wieso man etwas in C++ angeblich macht was voll mit Fehler ist, also definitiv keiner machen kann?


Anmelden zum Antworten