Wann sollte man eine Klasse verwenden vs ein struct in C++?
In welchen Szenarien ist es besser, auf ein struct
vs class
in C++?
Dies ist nicht nur für C++, aber um jede Sprache, die den beiden structs und Klassen.
Ich noch überhaupt nicht zu - ich nähere mich dieser Frage semantisch. Vielleicht gibt es einige technische Unterschiede, aber semantisch sind Sie nicht. Strukturen sind wirklich nützlich für die Erstellung von Wert-Typen sind die Klassen nicht.
Ich glaube, dass es keinen ernsthaften Grund für die Verwendung von Strukturen in C++. Mir structs sind eine redundante "feature" von C++, die gibt es nur für die Kompatibilität mit C, wie Typdefinitionen. Diese würde nicht existieren, wenn C++ war, war zunächst nicht behandelt, als eine Erweiterung von C und wurde von Grund auf neu entwickelt, wie zum Beispiel Java. Im Allgemeinen finde ich, dass viele der seltsamsten Dinge über C++ zu tun haben, mit der C-Kompatibilität.
Struct - Für-POD (plain old data) und alle member der Zugänglichkeit öffentlich ist. Klasse - Wenn Sie brauchen eine bessere Kapselung und brauchen member-Funktionen für die Arbeit mit der Klasse state.
Das ist wahr, nur durch Konvention. Es gibt keinen Unterschied, abgesehen von Standard-Kapselung.
Ich noch überhaupt nicht zu - ich nähere mich dieser Frage semantisch. Vielleicht gibt es einige technische Unterschiede, aber semantisch sind Sie nicht. Strukturen sind wirklich nützlich für die Erstellung von Wert-Typen sind die Klassen nicht.
Ich glaube, dass es keinen ernsthaften Grund für die Verwendung von Strukturen in C++. Mir structs sind eine redundante "feature" von C++, die gibt es nur für die Kompatibilität mit C, wie Typdefinitionen. Diese würde nicht existieren, wenn C++ war, war zunächst nicht behandelt, als eine Erweiterung von C und wurde von Grund auf neu entwickelt, wie zum Beispiel Java. Im Allgemeinen finde ich, dass viele der seltsamsten Dinge über C++ zu tun haben, mit der C-Kompatibilität.
Struct - Für-POD (plain old data) und alle member der Zugänglichkeit öffentlich ist. Klasse - Wenn Sie brauchen eine bessere Kapselung und brauchen member-Funktionen für die Arbeit mit der Klasse state.
Das ist wahr, nur durch Konvention. Es gibt keinen Unterschied, abgesehen von Standard-Kapselung.
InformationsquelleAutor Alan Hinchcliffe | 2008-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterschiede zwischen einem
class
und einstruct
in C++ sind, dass structs standardmäßigpublic
Mitglieder und Basen und-Klassen haben defaultprivate
Mitglieder und Basen. Sowohl in Klassen als auch structs können eine Mischung vonpublic
,protected
undprivate
Mitglieder, können die Vererbung verwenden können und member-Funktionen.Ich würde empfehlen, mit Strukturen als plain-old-data-Strukturen, die ohne jede Klasse-wie Merkmale und Klassen als aggregierte Daten-Strukturen mit
private
Daten und member-Funktionen.Der name ist irreführend, aber 9/4 (C++03) sagt: "EIN POD-struct ist ein Aggregat-Klasse, hat keine nicht-statischen Daten-member vom Typ non-POD-struct, nicht-POD-union (oder einem array von solchen Typen) oder die Referenz und hat keine Benutzer-definierten copy-Zuweisungsoperator und kein Benutzer-definierte Destruktor." Es gibt keine Einschränkung bei Verwendung von "struct" - Klasse-Schlüssel und keine Einschränkung bei Verwendung von "öffentlichen" (siehe 8.5.1/1 für Allgemeine Anforderungen). Dies ist nicht ein Unterschied zwischen "struct" und "class".
Ihre Nutzung des "Aggregat" könnte missverstanden werden, da die standard-definition. 🙂
Laut Stroustrup ' s "Prinzipien und Praxis" - Buch: "Strukturen sollen in Erster Linie dort eingesetzt werden, wo die Mitglieder jeden beliebigen Wert annehmen kann" (also dort, wo keine sinnvollen Klassen-Invarianten definiert werden können)
Natürlich können Sie die Verwendung von Klassen, wenn die Anbindung mit C. Es gibt keinen Unterschied zwischen Klassen und Strukturen. Structs sind Klassen; nur die Standard-Zugang ist gespiegelt, von privat zu öffentlich.
InformationsquelleAutor Commodore Jaeger
Als alle anderen Noten gibt es eigentlich nur zwei tatsächliche sprachliche Unterschiede:
struct
defaults, um den öffentlichen Zugang und dieclass
standardmäßig privat Zugang.struct
standardmäßigpublic
erbschaft-undclass
standardmäßigprivate
Vererbung. (Ironischerweise, wie bei so vielen Dingen in C++, der Standard ist rückwärts:public
Vererbung ist die bei weitem häufigste Wahl, aber die Menschen nur selten erklärenstruct
s nur zum speichern auf die Eingabe der "public
" keyword.Aber der eigentliche Unterschied in der Praxis zwischen einem
class
/struct
, in der Sie deklariert einen Konstruktor/Destruktor und eine, die nicht. Es gibt bestimmte Garantien für eine "plain-old-data" POD-Typ, die nicht mehr gelten, sobald Sie über die Klasse der Konstruktion. Um diese Unterscheidung klar, viele Leute bewusst nur die Verwendungstruct
s für POD-Typen, und, wenn Sie hinzufügen werden alle Methoden überhaupt, verwenden Sieclass
es. Der Unterschied zwischen den beiden Fragmenten unten ist ansonsten bedeutungslos:(Übrigens, hier ist ein thread mit einigen guten Erklärungen über das, was "POD-Typ" bedeutet eigentlich: Was sind POD-Typen in C++?)
Ob Sie
struct
oderclass
hat keinen Einfluss darauf, ob sich Ihr Objekt POD oder ob Sie sollten einen copy-Konstruktor / Destruktor. Member-Funktionen haben keinen Einfluss auf etwas, das POD. Als ich Las, was du geschrieben hast, ich sehe, Sie sind nicht darauf hindeutet, ansonsten aber die aktuelle Formulierung ist verwirrendGrundsätzlich POD structs sind, soll gewährleistet werden rückwärts-kompatibel mit C-code und sind somit grundsätzlich sollte nur so gestaltet werden, dass C-artigen Strukturen.
Die "real difference" - Teil dieser Antwort ist völlig falsch.
InformationsquelleAutor quark
Gibt es viele Missverständnisse, die in die bereits vorhandene Antworten.
die Sowohl
class
undstruct
deklarieren Sie eine Klasse.Ja, haben Sie möglicherweise ordnen Sie den Zugriff ändern von keywords innerhalb der definition der Klasse, je nachdem, welche Keywords, die Sie verwendet, um zu deklarieren die Klasse.
Aber, jenseits der syntax, die nur Grund für die Wahl einen über den anderen ist Konvention/Stil/Vorlieben.
Manche Menschen gerne zu halten mit den
struct
Schlüsselwort für Klassen ohne Memberfunktionen, weil die resultierende definition "sieht aus wie" eine einfache Struktur aus C.Ähnlich, wie einige Leute zu verwenden, die
class
Schlüsselwort für Klassen mit member Funktionen undprivate
Daten, weil er sagt "Klasse" auf, und sieht daher wie Beispiele aus Ihrem Lieblings-Buch über Objekt-orientierte Programmierung.Die Realität ist, dass dies völlig bis zu Ihnen und Ihrem team, und es mache praktisch keinen Unterschied zu Ihrem Programm.
Die folgenden zwei Klassen sind absolut gleichwertig, in jeder Hinsicht, außer Ihren Namen:
Können Sie sogar schalten Sie Stichworte, wenn redeclaring:
(obwohl dieser bricht Visual Studio baut aufgrund der nicht-übereinstimmung, so dass der compiler wird eine Warnung ausgeben, wenn Sie dies tun.)
und die folgenden Ausdrücke, die beide zu true ausgewertet werden:
Beachten Sie jedoch, dass Sie nicht schalten können die Schlüsselwörter, wenn Neudefinition; das ist nur, weil (per der one-definition rule) Duplikat der Klasse Definitionen über übersetzungseinheiten muss "bestehen aus der gleichen Folge von Token". Das heißt, Sie können nicht einmal exchange
const int member;
mitint const member;
, und hat nichts zu tun mit der Semantik vonclass
oderstruct
.Natürlich ist es das. Der Arduino-compiler kompiliert C++; das ist das Ende.
Also wenn ich das Verständnis dieser Recht: so lange, Wie Sie Ihre Sichtbarkeit Modifikatoren sind explizite, nicht ausgelassen wird, ist es egal. Sie schreiben, könnte eine große C++ - Anwendung mit nichts aber Strukturen; oder Sie können durch zu gehen und zu ändern, jeden Fall von struct zu class. Solange Sie nicht mit Standard-Sichtbarkeit, die Anwendungen wären genau die gleichen.
Ich bin nicht davon überzeugt, dass eine übersetzung Einheit eines C++ - Programms können Sie die vollständige Erklärung
class foo { public: ... };
und anderenstruct foo { ... };
die hätten sich zu halten gilt, nach dem "absolut gleichwertig" in Anspruch. Es kommt zur Vernunft, dass die unvollständige Erklärungenstruct foo;
undclass foo;
sind austauschbar. Diese spezifizieren nicht die Klasse Körper, und so sprechen Sie nichts, um den Zugriff auf das layout.Du hast Recht - wenn die Definitionen wurden für buchstäblich vom gleichen Typ sind, müssen Sie lexikalisch identisch für das Verhalten zu sein, gut definiert. Die struct-Taste und Klasse-Schlüssel sind sonst logischerweise austauschbar, obwohl (wobei die Semantik sind nicht betroffen), und
Foo
undBar
noch gleichwertigen/identischen Arten. Ich Tat, stellen Sie sicher, zu sagen, "wenn redeclaring" und geben Sie ein Beispiel. Kommen Sie, daran zu denken, werde ich zur Klärung dieser in der Antwort, um sicherzustellen, ich bin nicht irreführend Menschen in UBInformationsquelleAutor Lightness Races in Orbit
Das einzige mal, dass ich ein struct statt der Klasse bei der Deklaration der Funktor rechts, bevor Sie es in eine Funktion aufgerufen und wollen zu minimieren syntax um der Klarheit Willen. z.B.:
InformationsquelleAutor Ferruccio
Aus der C++ FAQ Lite:
Der Grund ist Konvention. Der compiler kümmert sich nicht, welche Sie verwenden, aber einen anderen Entwickler suchen, an der Ihr code leichter zu verstehen, was Sie meinte.
Der gesamte Dritte Absatz ist Argumentation.
InformationsquelleAutor Tal Pressman
Einem Ort, wo ein struct hat, war hilfreich für mich, wenn ich ein system haben, dass das empfangen von fixed-format-Nachrichten (über sagen, eine serielle Schnittstelle) von einem anderen system. Können Sie werfen den stream von bytes in einem struct, definiert die Felder, die dann einfach auf die Felder.
Offensichtlich, dies ist die gleiche Sache, die Sie tun würde, in C, aber ich finde, dass der Aufwand für die Dekodierung der Nachricht in eine Klasse in der Regel nicht Wert.
Oder Sie könnten einfach umzusetzen
operator >>
auf eine Klasse anstelle des Schreibens derprocessMessage
Funktion, die Ihre C++ - sehen eher aus wie richtiges C++ und weniger wie C.Neben der Tatsache, dass es ist nicht portabel zwischen verschiedenen Systemen, dies verstößt gegen aliasing-Regeln, so ist es nicht garantiert, um zu arbeiten, sogar innerhalb einer einzigen Architektur.
Dies kann funktionieren-Plattform (aber nicht compiler) unabhängig, aber Sie müssen verwendet Feste bitfields, ein
__packed__
struct und haben eine endian-bewusst ifdef-Implementierung (müssen Sie umdrehen, um auf einem Computer, auf dem die endian Typ ist gegenüber dem, was die externe Datenquelle). Es ist nicht schön, aber ich verwendet, um zu packen/entpacken von Registern für remote-Peripherie, die auf embedded-Plattformen in einer tragbaren Weise.HM, guter Punkt. Aliasing wird nicht ein problem sein, weil hier einer der Zeiger ist ein
char
geben, die befreit sind von aliasing. Es gibt allerdings noch ein problem, wenn auch einen anderen: Casting achar*
auf einen anderen Typ, wenn es nicht wirklich ein Objekt des letzteren Typs, der bereits initialisiert ist dass unter dieser Adresse, ist die UB als es gegen Leben Regeln. Afaik, auch wenn der Typ der destination ist trivial bebaubar, nur mit zugewiesenen Speicher nicht ausreichend für C++ formal zu ermöglichen, Behandlung, dass der Speicher als das geben.InformationsquelleAutor mbyrne215
Kann man mit "struct" in C++ wenn Sie schreiben eine Bibliothek, deren Einbauten sind C++, aber die API kann aufgerufen werden, indem Sie entweder C-oder C++ - code. Sie machen einfach einen einzelnen header enthält Strukturen und Globale API-Funktionen, die Sie setzen, um C-und C++ - code wie dieser:
Dann schreiben Sie eine Funktion bar() in einem C++ - Datei mit C++ - code und machen es callable von C und die beiden Welten Daten austauschen können über das struct deklariert ist. Es gibt andere Vorsichtsmaßnahmen natürlich beim mischen von C und C++, aber dies ist ein Vereinfachtes Beispiel.
InformationsquelleAutor Adisak
Wie jeder sagt, der einzige wirkliche Unterschied ist der Standard-Zugang. Aber ich besonders struct, wenn ich nicht will, jede Art der Kapselung mit einer einfachen Daten-Klasse, auch wenn ich Sie implementieren, einige helper-Methoden. Zum Beispiel, wenn ich etwas brauche wie diese:
InformationsquelleAutor ogoid
Strukturen (Hülsen, generell) sind griffbereit, wenn Sie bietet eine C-kompatible Schnittstelle mit einem C++ - Implementierung, da Sie sind tragbar über Sprachgrenzen hinweg und linker Formate.
Wenn das nicht ein Anlass zur Sorge für Sie, dann nehme ich an die Verwendung von "struct" statt "Klasse" ist ein guter Kommunikator des Vorsatzes (wie @ZeroSignal oben gesagt). Strukturen haben auch mehr vorhersehbar kopieren Semantik, also sind Sie nützlich für Daten, die Sie beabsichtigen, zu schreiben auf externe Datenträger oder senden über das Netz.
Strukturen sind auch praktisch für die verschiedenen metaprogramming Aufgaben, wie Züge Vorlagen, die Sie einfach aussetzen, eine Reihe von abhängigen typedefs:
...Aber das ist wirklich nur unter Nutzung der Struktur, die die Standard-Schutzebene wird...
"vorhersehbar kopieren Semantik": Die symantics sind die gleichen wie für Klasse (und haben die gleichen Probleme (flache Kopie).
Dieser post hätte, glauben Sie (hoffentlich aus versehen), dass alle Strukturen sind PODs. Das ist überhaupt nicht wahr. Ich hoffe, dass die Menschen nicht in die Irre leiten.
InformationsquelleAutor argv0
Für C++, es gibt wirklich nicht viel Unterschied zwischen structs und Klassen. Die wichtigsten funktionalen Unterschied ist, dass die Mitglieder einer struct standardmäßig public sind, während Sie privat sind standardmäßig in den Klassen. Ansonsten, soweit es die Sprache betrifft, Sie sind gleichwertig.
Sagte, Neige ich zum struct in C++ wie mache ich in C#, ähnlich zu dem, was Brian gesagt hat. Strukturen werden einfache Daten-Containern, während die Klassen werden verwendet, für Objekte, die Notwendigkeit zu handeln auf die Daten, zusätzlich zu einfach halten.
InformationsquelleAutor Andy
Beantwortung meiner eigenen Frage (schamlos), Wie bereits erwähnt, die Zugriffsrechte sind der einzige Unterschied zwischen Ihnen in C++.
Ich Neige dazu, verwenden Sie eine Struktur für die Daten-Speicherung nur. Ich werde lassen Sie es ein paar Hilfsfunktionen, wenn es macht die Arbeit mit den Daten erleichtern. Jedoch, sobald die Daten benötigt flow control (z.B. Getter/setter, pflegen oder schützen ein interner Zustand) oder beginnt acquring alle wichtigen Funktionen (im Grunde mehr-Objekt-like), es wird "aktualisiert", um eine Klasse besser zu kommunizieren Absicht.
InformationsquelleAutor Alan Hinchcliffe
Sind Sie so ziemlich das gleiche. Dank der Magie von C++ ein struct kann halt Funktionen, die Vererbung verwenden, erstellt mit "neu" und so weiter genauso wie eine Klasse
Der einzige funktionale Unterschied ist, dass eine Klasse beginnt mit einem privaten Zugang Rechte, die eine Struktur beginnt mit der öffentlichkeit. Dies ist die Abwärtskompatibilität mit C.
In der Praxis, ich habe immer verwendet structs als Inhaber der Datennutzung und-Klassen als Objekte.
InformationsquelleAutor enigmatic
Klasse.
Klasse-Mitglieder sind standardmäßig privat.
Entspricht
Also, wenn Sie versuchen
Bekommen wir einen Fehler:
main_one is private
weil Ihr nicht zugänglich. Wir könnenlösen Sie es, indem Sie initialisieren, indem Sie seinen öffentlichen dh
Struct.
Einer struct ist eine Klasse, wo die Mitglieder sind standardmäßig öffentlich.
Bedeutet
main_one
private, ieIch benutze Strukturen für Daten-Strukturen, wo die Mitglieder jeden beliebigen Wert annehmen kann, ist es
einfacher so.
InformationsquelleAutor Frrank
sind Sie die gleiche Sache mit verschiedenen Vorgaben (standardmäßig privat für
class
, und standardmäßig öffentlich fürstruct
), so in der Theorie, Sie sind völlig austauschbar.so, wenn ich nur ein Paket erstellen möchten einige Informationen zu bewegen, benutze ich eine Struktur, die, auch wenn ich ein paar Methoden gibt es (aber nicht viele). Wenn es eine meist undurchsichtige Sache, wo der größte nutzen wäre über Methoden, und nicht direkt auf die Daten der Mitglieder, verwende ich eine volle Klasse.
InformationsquelleAutor Javier
Structs standardmäßig public access und Klassen standardmäßig über einen privaten Zugang.
Ich persönlich verwende Strukturen für Daten-Transfer-Objekte oder als Value-Objekte. Wenn Sie als solche erkläre ich alle Mitglieder als const zu verhindern, dass die Modifikation durch anderen code.
InformationsquelleAutor anio
Einen Vorteil von
struct
überclass
ist, dass es spart eine Zeile code, wenn die Einhaltung "ersten öffentlichen Mitglieder, dann die privaten". In diesem Licht finde ich das Stichwortclass
nutzlos.Hier ist ein weiterer Grund für die Verwendung von nur
struct
und nieclass
. Einige code-style-Richtlinien für C++ empfehlen die Verwendung von kleinen Buchstaben für die Funktion der Makros, die Begründung, dass wenn das makro wird in eine inline-Funktion, der name sollte nicht geändert werden müssen. Hier gilt das gleiche. Sie haben Ihre schönen C-style struct und eines Tages, werden Sie feststellen, müssen Sie einen Konstruktor, oder einige bequeme Methode. Ändern Sie es zu einemclass
? Überall?Unterscheidung zwischen
struct
s undclass
es ist einfach zu viel Aufwand, immer in der Weise zu tun, was wir tun sollten - Programmierung. Wie so viele C++'s Probleme, es ergibt sich aus dem starken Wunsch, für rückwärts Kompatibilität.class
? Hast du gedacht, dass eine Klasse definiert, mit derstruct
Schlüsselwort kann nicht über member-Funktionen oder einen Konstruktor?weil der 1. Konsistenz und 2. einige statische Analysatoren beschweren sich über die Verletzung von 1.
Dass dem nicht Folgen. Was andere "Konsistenz" haben Sie einzuhalten? Jede Klasse wird von einem Mitglied namens
joe()
muss definiert werden, mitclass
keyword? Jede Klasse mit mindestens 4int
Mitglieder müssen definiert werden, mitstruct
keyword?Ich beziehe mich auf die Redewendung "POD Aggregate sind definiert mit
struct
Aggregate Methoden definiert, mitclass
". Zu viel ärger.InformationsquelleAutor Vorac
Technisch sind beide identisch in C++ zum Beispiel ist es möglich, eine Struktur zu haben, das überladen von Operatoren etc.
Jedoch :
Ich benutze Strukturen, wenn ich Wünsche, um Informationen von mehreren Typen gleichzeitig
Ich benutze Klassen, wenn die ich bin den Umgang mit "functional" - Objekt.
Hoffe, es hilft.
Zum Beispiel, ich fahre ein struct student im get... () - Methoden, über die hier - zu genießen.
InformationsquelleAutor Maciek
Benutze ich
struct
wenn ich definierenfunctors
undPOD
. Ansonsten benutze ichclass
.std::binary_function<>
ist nicht nur veraltet, c++17, auch entfernt es.Nicht wirklich überraschend, da war es in der Zeit geschrieben in C++03, eine Sprache definiert, die vor 15 Jahren.
InformationsquelleAutor AraK
Ich structs verwenden, wenn ich brauche zu erstellen POD-Typ oder Funktor.
InformationsquelleAutor ivan.ukr
Alle Gruppenmitglieder sind standardmäßig privat und alle struct-member standardmäßig public sind.
Klasse hat standardmäßig private Basen und Struct standardmäßig public-Basen. Struct in C keine member-Funktionen, wo, wie im Fall von C++ können wir die member-Funktionen, die Hinzugefügt wird, um die Struktur. Andere als diese Unterschiede, ich finde nicht alles, was überraschend über Sie.
InformationsquelleAutor Helping Bean
Als andere haben darauf hingewiesen,
Gibt es eine klare Empfehlung über die Verwendung der von Stroustrup/Sutter:
Jedoch im Hinterkopf behalten, dass es ist nicht klug nach vorne declare sth. als eine Klasse (
class X;
) und definieren es als struct (struct X { ... }
).Es kann funktionieren, auf einigen linkers (z.B. g++) und kann nicht auf andere (z.B. MSVC), so finden Sie sich in der Entwickler Hölle.
Ich kann nicht, leider. Ich bin nicht einmal in der Lage zu Handwerk-ein Beispiel. Die triviale
class Foo; struct Foo { void bar() {} }; int main() { Foo().bar(); }
nicht nur kompiliert und läuft mit MSVC 2017, wird es auch erzeugt eine klare Warnung, dassFoo
wurde erklärt wiestruct
aber definiert alsclass
. Aber ich erinnere mich auch deutlich, dass es Kosten unser team einen halben Tag zu finden, die dummen Fehler. Ich bin mir nicht sicher, was MSVC-version haben wir damals verwendet.Der linker sollte nicht auch wissen darüber, ob Sie verwendet werden
class
oderstruct
auf eine vorwärts-Deklaration, und die beiden sind untereinander austauschbar pro standard (obwohl es ist bekannt, dass der VS warnt; ich immer davon ausgegangen, dass war nur um zu vermeiden scheinbare Programmierer Fehler). Etwas, das riecht nicht nach rechts hier. Sind Sie sicher, es war nicht ein ODR Verletzung bug?Hmm, scheint VS ist nicht kompatibel in dieser Hinsicht (go figure)
Ich erinnere mich nicht genau. Hab das problem nicht auftreten, in der eine Anwendung direkt, sondern in einer Bibliothek verwendet wurde, die in einem gtest. Ich weiß nur, dass der linker erzeugt unverständliche Fehler (LNK???). Einmal ersetzte ich die
struct
-nach vorne zuclass
-forwards, die Probleme waren Weg. Heute finde ich es seltsam, auch. Ich würde mich freuen wenn Ihr etwas Licht auf, es.InformationsquelleAutor pasbi
Ich benutze struct nur, wenn ich muss halten einige Daten ohne member-Funktionen zugeordnet (zum Betrieb auf die Daten der Mitglieder) und zum Zugriff auf die Daten, die Variablen direkt.
Z.B.: Lesen/Schreiben von Daten aus Dateien und socket-streams etc .. Übergeben Funktion Argumente in eine Struktur, in der die Funktionsargumente sind einfach zu viele und Funktion syntax sieht zu langatmig.
Technisch gibt es keinen großen Unterschied zwischen Klasse und Struktur außer den Standard der Barrierefreiheit.
Mehr über, es hängt von der Programmierung Stil, wie Sie es verwenden.
InformationsquelleAutor harik
Ich dachte, dass Strukturen war gedacht als eine Daten-Struktur (wie ein multi-Datentyp "array" von Informationen) und Klassen war inteded für Code Verpackung (wie Sammlungen von Subroutinen & Funktionen)..
🙁
InformationsquelleAutor GaiusSensei
Verwende ich nie "struct" in C++.
Ich kann nicht immer eine Situation vorstellen, wo würden Sie ein struct, wenn Sie wollen private Mitglieder, es sei denn, Sie sind absichtlich versucht, um verwirrend zu sein.
Scheint es, dass die Verwendung von Strukturen ist eher eine syntaktische Hinweise, wie die Daten verwendet werden, aber ich würde lieber nur eine Klasse und versuchen, die explizit den Namen der Klasse, oder durch Kommentare.
E. g.
Wäre nicht das deklarieren einer
struct
schon ziemlich explizit, dass die Mitglieder der Klasse sein wird, per default, öffentlich?Code-sharing mit C ist ein sehr guter Grund.
InformationsquelleAutor Baltimark