51 Stimmen

C++ - Struktur vs. Klasse

Mögliche Duplikate:
C/C++ Struktur vs Klasse
Was sind POD-Typen in C++?

Hi,

In dem Buch C++ In a Nutshell, im Kapitel 6: Klassen, unter Zugriffsspezifiern, wurde Folgendes erwähnt:

In einer Klassendefinition ist der Standardzugriff für Member und Basisklassen privat. In einer Strukturdefinition ist der Standard öffentlich. Das ist der einzige Unterschied zwischen einer Klasse und einer Struktur, obwohl einige Programmierer aus Konvention nur Struktur für POD-Klassen und Klasse für alle anderen Klassen verwenden.

Meine Fragen hier sind:

  • Gibt es nicht noch einen Unterschied zwischen Klassen und Strukturen, dass Strukturen keine Funktionen enthalten und nur Daten speichern?
  • Was sind POD-Klassen? Und was bedeutet hier mit "alle anderen Klassen"? Gibt es dann spezielle Klassen?

Danke.

94voto

Simon Richter Punkte 27154

Der andere Unterschied ist, dass

template ...

erlaubt ist, aber

template ...

nicht erlaubt ist.

40voto

BlueMonkMN Punkte 24177

Sie könnten sich selbst beweisen, dass es keinen anderen Unterschied gibt, indem Sie versuchen, eine Funktion in einer Struktur zu definieren. Ich erinnere mich sogar daran, dass mein College-Professor, der über Strukturen und Klassen in C++ unterrichtete, überrascht war, dies zu erfahren (nachdem ihn ein Student korrigiert hatte). Ich glaube es jedoch. Es war irgendwie amüsant. Der Professor sagte immer wieder, was die Unterschiede waren, und der Student sagte immer wieder "eigentlich kannst du das auch in einer Struktur machen". Schließlich fragte der Professor: "OK, was ist der Unterschied?" und der Student informierte ihn, dass der einzige Unterschied die Standardzugänglichkeit der Elemente war.

Eine schnelle Google-Suche legt nahe, dass POD für "Plain Old Data" steht.

8voto

Sriram Punkte 9924

POD-Klassen sind Plain-Old-Datenklassen, die nur Datenmember und nichts anderes haben. Es gibt einige Fragen auf stackoverflow dazu. Finde eine hier.

Außerdem können in C++ Funktionen als Members von Strukturen haben, aber nicht in C. In C müssen Sie Zeiger auf Funktionen als Member in Strukturen haben.

3voto

René Nyffenegger Punkte 37584

Ok, POD bedeutet plain old data. Das bezieht sich normalerweise auf structs ohne jegliche Methoden, weil diese Typen dann verwendet werden, um mehrere Daten zu strukturieren, die zusammengehören.

Was das Fehlen von Methoden in structs betrifft: Ich habe schon mehr als einmal gesehen, dass ein struct Methoden hatte, und ich finde nicht, dass dies unnatürlich wäre.

2voto

knivil Punkte 906

1) Es ist der einzige Unterschied in C++.

2) POD: plain old data Andere Klassen -> nicht POD

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X