Unterschied zwischen Struktur und Klasse in C++

Suraj P 12 Oktober 2023
  1. die Schlüsselwörter struct vs. class in C++
  2. Zugriffsmodifikatoren in class vs. struct in C++
  3. Speicherzuweisung in class vs. struct in C++
  4. Nullwerte in class vs. struct in C++
  5. Werttyp vs. Referenztyp in class vs. struct in C++
  6. Sicherheit in class vs. struct in C++
Unterschied zwischen Struktur und Klasse 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.
Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Verwandter Artikel - C++ Class