22 Stimmen

Sollte ich Structs in C++ verwenden?

Der Unterschied zwischen struct und class ist in C++ gering, im Grunde nur, dass struct-Mitglieder standardmäßig öffentlich und class-Mitglieder standardmäßig privat sind.

Ich verwende jedoch immer noch Structs, wenn ich zum Beispiel reine Datenstrukturen benötige:

struct Rectangle {
    int width;
    int height;
};

Ich finde es sehr praktisch, damit zu arbeiten:

Rectangle r;
r.width = 20;
r.height = 10;

Die Datenstrukturen stammen jedoch aus der prozeduralen Programmierung, und ich mache objektorientierte Programmierung. I

1voto

yellowsnow Punkte 21

Es gibt nichts Falsches an der Verwendung einer Struktur in C++, ich neige dazu, die Verwendung von Klassen zu vermeiden, es sei denn, ich habe reichlich Zeit, um zu planen, was ihr Zweck sein sollte.

0voto

tia Punkte 9085

Ich würde struct-like class bevorzugen. Der erste Grund ist, nicht initialisierte struct zu vermeiden. Der andere Grund ist, dass Sie immer in der Lage, alle Komfort-Methoden, um die Struktur hinzufügen, wenn gewünscht.

0voto

SmacL Punkte 22014

Manchmal ist die Verwendung von Klassen mit Konstruktoren weniger leistungsfähig als die Verwendung von Structs, insbesondere beim Kopieren großer Datenmengen in Arrays. Der Grund dafür ist, dass Sie sicher Funktionen wie memcpy verwenden können, um große Datenblöcke zu verschieben, während Sie bei einer Klasse eher einen Iterator und/oder Kopier-Konstruktor verwenden müssen.

Siehe eine vorherige Frage von mir für eine weitere Diskussion zu diesem Thema.

0voto

wengseng Punkte 1330

Es klingt, als ob Sie einen Ferrari Scaglietti und einen Lamborgini Espada besitzen, manchmal fahren Sie Ferarri, manchmal Lamborghini.... Manchmal benutzen Sie struct, manchmal class, gibt es ein wahr oder falsch?

-1voto

Alexandre C. Punkte 53706

Früher habe ich Folgendes getan:

struct Interface
{
    virtual ~Interface() {}
    virtual void foo() = 0;
};

class Implementation : public Interface
{
    void foo(); // or public, it depends.
public:
    Implementation(...);
};

da bei Schnittstellen standardmäßig alle Mitglieder öffentlich sind und bei Implementierungen standardmäßig die Mitglieder privat sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X