Unterschied zwischen Struktur und Klasse in C++
-
die Schlüsselwörter
structvs.classin C++ -
Zugriffsmodifikatoren in
classvs.structin C++ -
Speicherzuweisung in
classvs.structin C++ -
Nullwerte in
classvs.structin C++ -
Werttyp vs. Referenztyp in
classvs.structin C++ -
Sicherheit in
classvs.structin 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. |
