struct das gleiche wie class



  • Hi,

    mir ist aufgefallen, dass man in Strukturen auch Methoden und private Deklerationen definieren kann.

    Ist das normal, oder liegt das an meinem Compiler.
    Es geht unter g++ und der Visual c++ 2005 Express Edition.

    struct s1
    {
        private int a;
        void methode(void){ return;};
    };
    

    Dies funktioniert!



  • Auch wenn das geht, kannst du auf Strukturen Vererbung oder Kapselung anwenden? Das macht ja grad die OOP aus. Vllt. kann man sagen, dass class das gleiche wie struct ist, nur noch einiges mehr kann.

    Gruß Xul



  • Fraager schrieb:

    struct s1
    {
        private int a;
        void methode(void){ return;};
    };
    

    Dies funktioniert!

    Das funktioniert nicht! Dein Code ist kein standardkonformes C++.

    Xul schrieb:

    Auch wenn das geht, kannst du auf Strukturen Vererbung oder Kapselung anwenden? Das macht ja grad die OOP aus. Vllt. kann man sagen, dass class das gleiche wie struct ist, nur noch einiges mehr kann.

    Nein, kann man nicht. Der einzige Unterschied zwischen class und struct ist die defaultmäßige Sichtbarkeit, d.h.

    struct foo : bar
    {
    };
    // ist das gleiche wie
    class foo : public bar
    {
    public:
    };
    

    Und was die OOP ausmacht steht durchaus zur Debatte, das es "die OOP" im Grunde gar nicht gibt; aber Vererbung ist sicher alles andere als essentiell für OOP.



  • finix schrieb:

    ...

    Xul schrieb:

    Auch wenn das geht, kannst du auf Strukturen Vererbung oder Kapselung anwenden? Das macht ja grad die OOP aus. Vllt. kann man sagen, dass class das gleiche wie struct ist, nur noch einiges mehr kann.

    Nein, kann man nicht....

    Nur, um Mißverständnissen vorzubeugen: finix' Antwort bezieht sich auf den zweiten Teil von Xuls Frage:

    Xul schrieb:

    Vllt. kann man sagen, dass class das gleiche wie struct ist, nur noch einiges mehr kann.

    =>

    finix schrieb:

    ...Nein, kann man nicht....

    "Vererbung und Kapselung" kann man durchaus auf structs anwenden (und finix beweist natürlich, dass er das weiß) 😉

    Gruß,

    Simon2.



  • finix schrieb:

    Das funktioniert nicht! Dein Code ist kein standardkonformes C++.

    weil ein lächerlicher doppelpunkt fehlt 😕



  • @finix! Geht es um den Doppelpunkt? Nein! Ist wahrscheinlich nur ein Tippfehler und auch für die Frage unerheblich.

    @Fraager! struct und class sind in C++ bis auf EINE Sache gleichwertig. Members in struct sind ohne weitere Angabe public. Während in class Members ohne Angabe private sind. Ansonst ist struct gleich wie class.



  • Artchi schrieb:

    Members in struct sind ohne weitere Angabe public. Während in class Members ohne Angabe private sind. Ansonst ist struct gleich wie class.

    Fast. Die Vererbung ist auch, wenn nicht explizit angegeben, bei struct public und bei class private:

    struct a : /*public*/ b {};
    class c : /*private*/ d {};
    


  • net schrieb:

    finix schrieb:

    Das funktioniert nicht! Dein Code ist kein standardkonformes C++.

    weil ein lächerlicher doppelpunkt fehlt 😕

    net schrieb:

    @finix! Geht es um den Doppelpunkt? Nein! Ist wahrscheinlich nur ein Tippfehler und auch für die Frage unerheblich.

    Sagt ihr das auch eurem Compiler?



  • finix schrieb:

    net schrieb:

    finix schrieb:

    Das funktioniert nicht! Dein Code ist kein standardkonformes C++.

    weil ein lächerlicher doppelpunkt fehlt 😕

    net schrieb:

    @finix! Geht es um den Doppelpunkt? Nein! Ist wahrscheinlich nur ein Tippfehler und auch für die Frage unerheblich.

    Sagt ihr das auch eurem Compiler?

    nö. wenn, dann sagt er es uns!
    aber ich dachte ja du wärst ein mensch. hättest wenigstens 'syntax error in line ...' schreiben können 😉


Log in to reply