C-Struktur und C++-Struktur

Lesezeit: 5 Minuten

Könnte mir bitte jemand sagen, was der Hauptunterschied zwischen C- und C++-Strukturen ist.

  • C-Strukturen können keine Methoden enthalten, während C++-Strukturen dies können 🙂

    – vpram86

    11. Februar 2010 um 6:34 Uhr

  • Zur Gruppierung der Daten werden grundsätzlich C-Strukturen verwendet.

    – Asch

    11. Februar 2010 um 6:43 Uhr

  • C++-Strukturen unterstützen die Vererbung. 🙂

    – Agnel Kurian

    11. Februar 2010 um 7:57 Uhr

  • C++-Strukturen unterstützen private Member

    – Sellibitze

    11. Februar 2010 um 9:05 Uhr

In C++ struct und class sind genau dasselbe, außer dass struct standardmäßig auf public Sichtbarkeit und Klasse standardmäßig auf private Sichtbarkeit.

In C befinden sich Strukturnamen in ihrem eigenen Namensraum, also falls vorhanden struct Foo {};du musst schreiben struct Foo foo; um eine Variable dieses Typs zu erstellen, während Sie in C++ einfach schreiben können Foo foo;, obwohl auch der C-Stil erlaubt ist. C-Programmierer verwenden normalerweise typedef struct {} Foo; um die C++-Syntax für Variablendefinitionen zuzulassen.

Die Programmiersprache C unterstützt auch keine Sichtbarkeitseinschränkungen, Elementfunktionen oder Vererbung.

  • In C++ befinden sich Struct-Namen ebenfalls in einem eigenen Namensraum. Der Unterschied besteht darin, dass der Compiler bei der Suche nach einem Bezeichner zuerst im allgemeinen Namensraum sucht und, wenn er nicht gefunden wird, auch den benutzerdefinierten Klassen-Namensraum überprüft. In C++ ist er richtig: struct x {}; void x() {} während dies nicht ist typedef struct x {} x; void x() {}da der globale Bezeichnerraum bereits ein hat x (typedef) kollidiert die Deklaration der Funktion (übrigens, im ersten Beispiel müssen Sie schreiben, um eine Variable zu erstellen struct x var sodass der Bezeichner nur als benutzerdefinierter Typ gesucht wird).

    – David Rodríguez – Dribeas

    11. Februar 2010 um 9:49 Uhr


Benutzeravatar des Speeders
Speeder

In C++ verhalten sich Strukturen wie Klassen und erlauben Methoden, Konstruktoren, Destruktoren usw.

Der Hauptunterschied zwischen Klassen und C++-Strukturen besteht darin, dass alles innerhalb von Strukturen ist Öffentlichkeit standardmäßig, während alles innerhalb von Klassen ist Privatgelände standardmäßig. (dh: nichts außerhalb kann direkt darauf zugreifen)

  • Laut meinem CS-Profi besteht ein weiterer Unterschied zwischen Strukturen und Klassen darin, dass eine Struktur nicht fehlschlägt.

    – Jeremy Friesner

    11. Februar 2010 um 7:24 Uhr

Es gibt mehrere Unterschiede in der C- und C++-Struktur

  1. In C definieren wir, dass das Schlüsselwort struct erforderlich ist, um den Strukturtypwert zu erstellen, während dies in C++ nicht erforderlich ist.

  2. In C gibt es keine Funktion innerhalb der Struktur, während wir in C++ Funktionen definieren können, die direkt auf die Datenelemente der Struktur zugreifen können (Funktion ist Namen als Methode in C++).

  3. Es gibt kein Konzept des Zugriffsmodifikators innerhalb der Struktur in C, während wir in C++ den Zugriffsmodifikator finden können (z. B. private und public ). Standardmäßig sind alle öffentlich.

  4. Strukturen in C können keine statischen Member haben, während Strukturen in C++ statische Member haben können.

  5. Die Größe einer leeren Struktur ist in C eine Einschränkungsverletzung, in C++ ist sie jedoch immer 1.

  6. Wir können in C++ sowohl Zeiger als auch Verweise auf Structs haben, aber nur Zeiger auf Structs sind erlaubt. (Referenzen sind kein Merkmal der C-Sprache)

  • In C müssen wir das Schlüsselwort struct schreiben, wenn wir eine Variable des Strukturtyps deklarieren. Beispiel: Struktur ABC var1, var2; Während C++ versucht, die Lücke zwischen abgeleitetem Datentyp und integriertem Datentyp zu minimieren. So wie wir int oder char definieren, können wir hier die Strukturvariable direkt deklarieren als: Beispiel: ABC var1, var2;

    – Sandeep_schwarz

    21. Juni 2017 um 9:17 Uhr


  • Ah ok ja, ich verstehe, dass Sie meinten, Sie müssen struct auch eingeben, um neue Variablen zu deklarieren

    – Freier Berater

    21. Juni 2017 um 12:22 Uhr

C structs ähnelt eher einer Definition einer zusammengesetzten Datenstruktur

C++-Strukturen können als Klasse betrachtet werden, aber der Gültigkeitsbereich aller Mitgliedsvariablen ist standardmäßig öffentlich.

Denken Sie zusätzlich zu den obigen Antworten daran, dass C++-Strukturen die Vererbung unterstützen und daher Zeiger auf vtables enthalten können. Dies kann einen großen Unterschied machen, wenn diese Strukturen prozessübergreifend serialisiert und deserialisiert werden. Vorlagen werden ebenfalls unterstützt.

  • Anstatt vtables (die nicht in der C++-Sprachspezifikation enthalten sind) zu erwähnen, sollten Sie dies erwähnen virtual Methoden.

    – Thomas Matthäus

    11. Februar 2010 um 19:00 Uhr

  • Der beste Prozess zum Serialisieren und Deserialisieren von Strukturen besteht darin, über eine Funktionalität zu verfügen, die einzeln auf die Datenfelder (Member) zugreift. Gilt für C- und C++-Sprachen. Ein Hauptgrund ist, dass der Compiler zwischen Membern Auffüllungen hinzufügen darf (gilt für beide Sprachen).

    – Thomas Matthäus

    11. Februar 2010 um 19:01 Uhr

  • In C ist das Auffüllen nur eine Frage weniger ungenutzter Bytes, wenn die Daten in ihrer binären Darstellung serialisiert und deserialisiert werden. Bei C++ kann es Probleme geben, wenn Objekte von Klassen mit virtuellen Funktionen verwendet werden.

    – Agnel Kurian

    11. Februar 2010 um 19:30 Uhr

Benutzeravatar von Herat Patel
Herat Patel

C: Wir können keine Funktion innerhalb der Struktur in c definieren.

C++: Wir können Funktionen innerhalb der Struktur in C++ definieren.

  • Anstatt vtables (die nicht in der C++-Sprachspezifikation enthalten sind) zu erwähnen, sollten Sie dies erwähnen virtual Methoden.

    – Thomas Matthäus

    11. Februar 2010 um 19:00 Uhr

  • Der beste Prozess zum Serialisieren und Deserialisieren von Strukturen besteht darin, über eine Funktionalität zu verfügen, die einzeln auf die Datenfelder (Member) zugreift. Gilt für C- und C++-Sprachen. Ein Hauptgrund ist, dass der Compiler zwischen Membern Auffüllungen hinzufügen darf (gilt für beide Sprachen).

    – Thomas Matthäus

    11. Februar 2010 um 19:01 Uhr

  • In C ist das Auffüllen nur eine Frage weniger ungenutzter Bytes, wenn die Daten in ihrer binären Darstellung serialisiert und deserialisiert werden. Bei C++ kann es Probleme geben, wenn Objekte von Klassen mit virtuellen Funktionen verwendet werden.

    – Agnel Kurian

    11. Februar 2010 um 19:30 Uhr

1410500cookie-checkC-Struktur und C++-Struktur

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy