In C ++ und anderen beeinflussten Sprachen gibt es ein Konstrukt mit dem Namen Structure ( struct
) und ein anderes mit dem Namen the class
. Beide können Funktionen und Variablen aufnehmen. Einige Unterschiede sind:
- Klasse erhält Speicher im Heap und
struct
Speicher im Stack (Bemerkung: Dies ist falsch für C ++, aber möglicherweise korrekt in dem, was das OP "beeinflusste Sprachen" nennt) - Klassenvariablen sind standardmäßig privat und in
struct
öffentlich
Meine Frage ist: struct
Wurde das irgendwie für den Unterricht aufgegeben? Wenn ja warum? Abgesehen von den oben genannten Unterschieden struct
kann a die gleichen Aktionen ausführen wie eine Klasse. Warum also aufgeben?
c++
object-oriented
prometheuspk
quelle
quelle
Antworten:
Es wird überhaupt nicht aufgegeben. Tatsächlich
class
bieten Ihnen auch moderne Sprachen wie C #, die stark genutzt werden, noch Unterstützungstruct
. Ich verweise auf diesen Artikel, wenn es nützlich ist, eine über die andere zu wählen:Auswahl zwischen Klassen und Strukturen
Zitiert aus dem MSDN-Artikel:
quelle
Sie täuschen sich in C ++: Der einzige signifikante Unterschied zwischen Klasse und Struktur ist der Unterschied zwischen den Standardzugriffsspezifizierern. Struktur und Klasse sind in jeder Hinsicht Synonyme. Ich glaube, Struktur wird beibehalten, um die Abwärtskompatibilität mit C zu gewährleisten.
quelle
Die Sprache D hat eine größere Unterscheidung zwischen Klasse und Struktur geschaffen
Eine Struktur in d ist nichts anderes als ein Stapel zugeordneter Datensatz mit einigen Funktionen, die Sie aufrufen können (es gibt keine Option) für die Vererbung, es sei denn, Sie verwenden ein enum + union-Setup, dh Sie implementieren den Polymorfismus selbst), der als Wert übergeben wird
Eine Klasse ist so, wie wir es gewohnt sind: virtuelle Funktionen, Heap-Zuweisung, (einfache) Vererbung, übergeben durch ref
quelle