C+ statt C++



  • Optimizer schrieb:

    Klassen sind das selbe wie structs. Außer du meinst vielleicht die alten C - structs. Gut, dass ich nie C programmiert habe. 🤡

    Ist es nicht so, dass struct-members (falls nicht explizit angegeben) automatisch public sind während class-members automatisch private sind? Ich finde das ist schon ein winzig kleiner Unterschied 😉 .



  • Es ist technisch kein Unterschied 😉



  • Klar, aber erst nach dem Syntaxcheck.



  • krass, is ja gut. Nur weil man sie minimal anders bedient, ist es trotzdem das selbe. Davon abgesehen, macht es für mich sowieso keinen Unterschied, weil ich immer explizit nen public, protected und private - Teil habe.



  • Shlo schrieb:

    gh0st124 schrieb:

    Klassen sind wie Strukturen, können aber einiges mehr...

    zum Beispiel?

    o Methoden aufnehmen;
    o Einzelne Elemente verstecken (Zugriffsspezifikationen a la private - public - protected;



  • Das können Strukturen auch.



  • Naja, aber der Aufwand ist bei structs größer, um das zu bewerkstelligen.



  • häh?
    Leute, offenbar ist vielen von euch nicht bewusst, dass structs und Klassen (deshalb hab ich es auch so provokant geschrieben) das selbe sind.
    Sie werden auch genau so wie Klassen benutzt. Der einzige mir bekannte Unterschied ist der, den MaSTaH erwähnt hat.



  • Schon klar, aber es ist doch unbestritten schwieriger, Membervariablen in structs private zu machen als in Klassen, oder nicht?!



  • Warum ist das schwieriger? Du schreibst genauso public: und private: hin. Es ist genau gleich.
    Nur die Voreinstellung, wenn du nichts hinschreibst, ist anders.



  • Äh...
    Ja, ganze 8 Zeichen (private:) schwieriger. :p

    // struct mit privaten Membervariablen:
    struct foo
    {
    private:
        T bar;
    };
    
    // aequivalente Klasse:
    class foo
    {
        T bar;
    };
    

    Im Ernst: structs SIND tatsächlich äquivalent zu Klassen, mal von dieser Kleinigkeit mit private/ public abgesehen.



  • struct und class sind das gleich... wird auch beim compilieren gleich behandelt. Es gibt also theoretisch keinen Unterschied. Allerdings macht man bei einem struct deutlich "Hey, hier handelt es sich um eine reine Datenstruktur, der ich gerne nur public-Members zur Verfügung stellen will!" Wenn ich keine reine Datenstruktr haben will, nehme ich ein class.

    Es ist eine reine Design-Frage und was ich damit "Aussagen" will.



  • @nman
    also das die gleich sind wage ich zu bezweifeln bis ich nicht ASM code von den beiden beispielen gesehen habe 🙂
    Erst ab dann kann man sagen sie seien "äquivalent"



  • *** schrieb:

    also das die gleich sind wage ich zu bezweifeln bis ich nicht ASM code von den beiden beispielen gesehen habe 🙂
    Erst ab dann kann man sagen sie seien "äquivalent"

    Du wirst nicht den Assemblercode davon zu sehen bekommen, weil es den nicht gibt. Die beiden Konstrukte sind äquivalent, weil der C++ Standard das so definiert, Punkt. Wenn irgendein Compiler dafür unterschiedlichen Code generiert, ist das sein Problem.



  • gh0st124 schrieb:

    Shlo schrieb:

    gh0st124 schrieb:

    Klassen sind wie Strukturen, können aber einiges mehr...

    zum Beispiel?

    o Methoden aufnehmen;
    o Einzelne Elemente verstecken (Zugriffsspezifikationen a la private - public - protected;

    ich würde dir ganz dringend raten ein gutes C++ Buch zur Hand zu nehmen und es auch zu lesen 😉



  • Es gibt sowieso keinen Assembler-Code für "Strukturen" oder "Klassen", weil das Ganze eine reine Vorstellungssache ist.
    Soweit ich weiss, ist lediglich vorgeschrieben, wie die Elemente im Speicher zu liegen haben und mehr nicht. Die Methoden haben genau genommen nach dem Compilieren auch nichts mehr mit den Daten selber zu tun, bzw. gehören nicht zu den Daten, wie es so schön dargestellt wird.



  • Optimizer schrieb:

    Es gibt sowieso keinen Assembler-Code für "Strukturen" oder "Klassen", weil das Ganze eine reine Vorstellungssache ist.
    Soweit ich weiss, ist lediglich vorgeschrieben, wie die Elemente im Speicher zu liegen haben und mehr nicht. Die Methoden haben genau genommen nach dem Compilieren auch nichts mehr mit den Daten selber zu tun, bzw. gehören nicht zu den Daten, wie es so schön dargestellt wird.

    Es ist sogar noch nicht mal vorgeschrieben, wie die Elememnte im Speicher vorliegen. Stichwort alignment!



  • tobidope schrieb:

    Es ist sogar noch nicht mal vorgeschrieben, wie die Elememnte im Speicher vorliegen. Stichwort alignment!

    Die Reihenfolge innerhalb eines Sichtbarkeitsbereiches (public, private, protected) schon.



  • Die Reihenfolge innerhalb eines Sichtbarkeitsbereiches (public, private, protected) schon.

    Hat das eigentlich irgend einen tieferen Sinn?



  • Helium schrieb:

    Die Reihenfolge innerhalb eines Sichtbarkeitsbereiches (public, private, protected) schon.

    Hat das eigentlich irgend einen tieferen Sinn?

    Ich nehme an, es kommt von den C structs, denn dort war es ja wichtig...
    Um ehrlich zu sein, sehe ich aber, ausser bei den C structs den Sinn auch nicht.


Anmelden zum Antworten