Unterschied zwischen Struktur und Klasse in C++
-
die Schlüsselwörter
struct
vs.class
in C++ -
Zugriffsmodifikatoren in
class
vs.struct
in C++ -
Speicherzuweisung in
class
vs.struct
in C++ -
Nullwerte in
class
vs.struct
in C++ -
Werttyp vs. Referenztyp in
class
vs.struct
in C++ -
Sicherheit in
class
vs.struct
in C++
Dieser Artikel erklärt den Unterschied zwischen einer Struktur und einer Klasse in C++. Dieser Artikel bezieht sich auf die neueste Version von C++; in den alten Versionen gab es noch viel mehr Einschränkungen und Unterschiede zwischen einem struct
und einer class
.
In den meisten Fällen ist die Struktur
einer Klasse
ziemlich ähnlich, aber es gibt nur wenige Unterschiede. Schauen wir sie uns nacheinander an.
die Schlüsselwörter struct
vs. class
in C++
Eine Struktur wird mit dem Schlüsselwort struct
deklariert, während das Schlüsselwort class
verwendet wird, um eine Klasse zu deklarieren.
Die Syntax für eine Klasse:
class demo {
private:
private
members...
.
public : public members....
};
Die Syntax für eine Struktur:
struct demo {
members1;
members2;
...
};
Zugriffsmodifikatoren in class
vs. struct
in C++
In C++ haben die class
und struct
drei Zugriffsspezifikatoren: public
, private
und protected
. In C++ sind die Member einer Struktur standardmäßig public
, während die Member einer Klasse standardmäßig private
sind.
Beispielcode mit class
:
#include <bits/stdc++.h>
using namespace std;
class demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
}
Ausgabe: Wir erhalten einen Kompilierfehler, weil die temp
privat ist.
[Error] int demo::temp is private
[Error] within this context
Beispielcode mit struct
:
#include <bits/stdc++.h>
using namespace std;
struct demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
cout << d.temp;
}
Ausgang:
20
Speicherzuweisung in class
vs. struct
in C++
Immer wenn eine Struktur erstellt und implementiert wird, wird Speicher im stack
-Bereich zugewiesen, aber Speicher wird im heap
-Bereich zugewiesen, wenn eine Klasse erstellt und implementiert wird.
Nullwerte in class
vs. struct
in C++
Mitglieder von Strukturen können keine null
-Werte sein, während Klassenmitglieder null
-Werte haben können.
Werttyp vs. Referenztyp in class
vs. struct
in C++
In C++ sind Strukturen ein Werttyp und Klassen ein Referenztyp. Werttypen speichern ihren Inhalt auf einem Stapel und halten den Wert direkt dort, wo sie deklariert sind. Wenn also eine Strukturvariable erstellt wird, enthält die Variable direkt die Daten der Struktur
.
Aber im Fall einer Klasse vom Referenztyp enthält sie, wann immer ein Objekt erstellt wird, anstelle der Daten die Referenz
darauf.
Sicherheit in class
vs. struct
in C++
Sicherheit ist ein wichtiges Problem bei Strukturen, da wir die Implementierungsdetails der Endbenutzer nicht verbergen können, aber Entwurfsdetails in der Klassenimplementierung leicht verborgen werden können.
Fassen wir die Unterschiede tabellarisch zusammen.
Struktur | Klasse |
---|---|
Verwenden Sie das Schlüsselwort struct , um eine Struktur zu definieren. |
Verwenden Sie das Schlüsselwort class , um eine Klasse zu definieren. |
Weniger sicher. | Sicherer, da Implementierungen vor dem Endbenutzer verborgen werden können. |
Speicher wird im Bereich stack allokiert. |
Speicher wird im heap -Bereich allokiert. |
Mitglieder können keine null -Werte haben. |
Mitglieder können null -Werte haben. |
Der Zugriffsmodifikator ist standardmäßig öffentlich . |
Der Zugriffsmodifikator ist standardmäßig privat . |
Struktur ist ein Werttyp . |
Klasse ist ein Referenztyp . |