Announcement

Collapse
No announcement yet.

Structs oder Classes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Structs oder Classes

    zunächst mal gehe ich davon aus, dass ihr wisst, was eine Struktur und was eine Klasse ist.

    In vielen Tutorials wird erzählt, dass Structs (Strukturen) in c++ gänzlich durch classes (Klassen) ersetzt worden sind. Es gehöre nicht in den Programmierstil eines c++ Programmierers Structs zu verwenden, man sei ja schließlich kein C Programmierer.

    Soweit so gut.
    Mir kommt dies auch logisch vor, da man mit Klassen das selbe machen kann wie mit strukturen, und sogar noch mehr.

    Jetzt kommt mein Informatik Lehrer an (Wir lernen Pascal x_X)
    und erzählt uns einen von Records. ich frag ihn womit man das in c++ gleichsetzen könne und er sagt strukturen. Also frag ich ihn, ob das nicht eher ein Reines C element sei, was bereits durch Klassen verbessert und ersetzt wurde.
    Darauf guggt er mich an und meinte, dass es doch schwachsinn sei, da structs und klassen was ganz anderes seien, und somit structs keinesfalls ersetzt seien.

    Meine Frage lautet jetzt:

    Sollte ich mir ernsthaft überlegen, ob ich meine Programme (die wunderbar mit Klassen Funktionieren) auch mal mit klassen zu probieren, und was ist denn angeblich an klassen so anders als an structs!?!?

    weil für mich ist das verhältnis nicht

    Klassen | Strukturen

    ,sondern

    Klassen > Strukturen

    Naja plz answer me

  • #2
    Bei Strukturen sind die Membervariablen per default public bei Klassen private. Das ist meiner Meinung nach der einzigste Unterschied.

    Gruß Ud

    Comment


    • #3
      Hallo Udo!

      Das ist leider nicht alles!
      Bsp: virtual, friends usw.

      Klassen sind schon etwas grundlegend verschieden zu structuren.
      OOP geht mit structuren überhaupt nicht.
      Structuren sind bestandteil von c und klassen von c++.

      gruß fre

      Comment


      • #4
        Hallo Fred,

        schon mal so was probiert?

        <

        struct Test
        {
        int m_Val;

        Test()
        : m_Val( 0 )
        {}

        virtual int getVal() { return m_Val; }
        };

        >

        (Visual C++ übersetzt das klaglos

        Comment


        • #5
          Laut Stroustrup ist der einzige Unterschied der, dass alle Methoden und Attribute der Struct per Default public sind. Ansonsten gibt es keinen.
          (s. 'Die C++ Programmiersprache' 4. aktualisierte Auflage, ( auf deutsch), S. 24

          Comment


          • #6
            Am einfachsten und sichersten ist ja immer der Versuch. so sieht das mit den Friends aus:

            [CODE]
            #include <iostream>

            using namespace std;

            struct Struktur; // Vorwärtsdeklaration

            class Klasse
            {
            friend class Struktur;

            public:
            Klasse ( const string& n )
            : name(n) { }

            private:
            string name;
            };


            struct Struktur
            {
            Struktur ( Klasse* k )
            : sklasse(k)
            { }

            void printClassName ()
            {
            cout << sklasse->name << endl;
            }

            private:
            Klasse* sklasse;
            };


            int main ( int argc, char* argv[] )
            {
            Klasse* k = new Klasse("Klasse Nachname");
            Struktur* s = new Struktur(k);
            s->printClassName();
            }
            Zuletzt editiert von Sebastian Rose; 02.11.2007, 18:33.

            Comment

            Working...
            X