Unterschied zwischen einer Struktur und einer Klasse [Duplikat]

7

Ich habe meine Hausaufgaben gemacht und hatte verschiedene Antworten auf Google. Einige sagen, dass Strukturen keine Vererbung haben, manche sagen, dass Strukturen keine Zugriffsspezifizierer haben, während andere sagen, dass sie beide haben.
Könnte jemand dann klarstellen, die Unterschiede zwischen einer Struktur und einer Klasse in C und C ++, und auch der Unterschied zwischen einer Struktur in C & amp; C ++.

    
Siddhartha 14.10.2011, 01:00
quelle

2 Antworten

22

In C ++ besteht der einzige Unterschied zwischen einer Struktur und einer Klasse darin, dass die Strukturelemente standardmäßig öffentlich sind und die Klassenmitglieder standardmäßig privat sind.

Allerdings ist es am besten, das Schlüsselwort struct für etwas zu verwenden, das vernünftigerweise eine Struktur in C sein könnte (mehr oder weniger POD-Typen), und das class Schlüsselwort, wenn es C ++ - spezifische Funktionen wie Vererbung und Elementfunktionen verwendet.

C hat keine Klassen.

C-Strukturen können keine C ++ - spezifischen Funktionen verwenden.

BEARBEITEN :

Die C ++ FAQ Lite , Frage 7.9, sagt Folgendes:

  

Die Mitglieder und Basisklassen eines struct sind standardmäßig public ,   in class sind sie standardmäßig auf private eingestellt. Hinweis: Sie sollten machen   Ihre Basisklassen explizit public , private oder protected ,   anstatt sich auf die Standardeinstellungen zu verlassen.

     

struct und class sind ansonsten funktionell äquivalent.

     

OK, genug von diesem quietschenden, sauberen Techno-Talk. Emotional, am meisten   Entwickler unterscheiden stark zwischen einem class und einem struct .   A struct einfach fühlt sich wie ein offener Haufen von Bits mit sehr wenig an   in der Art der Kapselung oder Funktionalität. A class fühlt sich wie ein   lebendiges und verantwortungsbewusstes Mitglied der Gesellschaft mit intelligenten Diensten, a   starke Einkapselungsbarriere und eine gut definierte Schnittstelle. Schon seit   Das ist die Konnotation, die die meisten Leute schon haben, sollte man wahrscheinlich   Verwenden Sie das Schlüsselwort struct , wenn Sie eine Klasse mit sehr wenigen Methoden haben   und hat public Daten (solche Dinge tun existieren in gut gestaltet   Systeme!), aber ansonsten sollten Sie wahrscheinlich das Schlüsselwort class verwenden.

Und Zitat von Stroustrups "Die C ++ Programmiersprache", 4. Ausgabe, Abschnitt 16.2.4:

  

Diese beiden Definitionen von S sind austauschbar, obwohl es dies ist   normalerweise weise, um zu einem Stil zu bleiben. Welchen Stil Sie verwenden, hängt davon ab   Umstände und Geschmack. Ich neige dazu, struct für Klassen zu verwenden, die ich   denke an "nur einfache Datenstrukturen". Wenn ich an eine Klasse als "a   richtiger Typ mit einer Invariante: "Ich benutze class . Konstruktoren und   Zugriffsfunktionen können sogar für * struct * s sehr nützlich sein, aber als a   Stenographien statt Garanten von Invarianten.

    
Keith Thompson 14.10.2011, 01:20
quelle
3

In C gibt es keine Klassen. In C ++ haben Strukturen einen Standardzugriffsspezifizierer von public , während Klassen standardmäßig auf private gesetzt sind.

Es gibt einige Unterschiede zwischen Strukturen in C und C ++; in C ++ können sie von anderen Klassen oder Strukturen erben, sie können Elementfunktionen enthalten und ihre Namen müssen nicht mit einem ausgearbeiteten Typspezifizierer bezeichnet werden.

    
Hugh 14.10.2011 01:18
quelle

Tags und Links