Sollte ich die structs in C++?
Den Unterschied zwischen struct und class ist ein kleines in C++, im Grunde nur, dass struct member sind per default public, und die Schüler sind standardmäßig private.
Jedoch, ich benutze immer noch Strukturen, Wann immer ich brauche Reine Datenstrukturen, zum Beispiel:
struct Rectangle {
int width;
int height;
};
Ich finde das sehr bequem, mit zu arbeiten:
Rectangle r;
r.width = 20;
r.height = 10;
Jedoch, Daten-Strukturen sind von der prozeduralen Programmierung, und ich mache der Objekt-orientierten Programmierung. Ist es eine schlechte Idee, dieses Konzept einzuführen, in OO?
- Die Struktur in den Begriff der "Daten-Struktur" bedeutet nicht struct.
- Strukturen sind auch Teil der C++ - standard, und Sie sollten Sie verwenden, Wann immer Sie das Bedürfnis verspüren.
- Ich glaube nicht, dass es nichts falsch mit diesem, wenn es Sinn macht in dem Kontext, in der Sie arbeiten.
- Primitive Typen haben auch prozeduralen Programmierung Herkunft. Aber das bedeutet nicht, sollten Sie nicht verwenden, Sie in der OO-Programmierung.
- mögliche Duplikate von Wenn Sie sollten Sie verwenden Sie eine Klasse vs ein struct in C++?
- Die schlechte Idee ist, zu "objektorientierte Programmierung". C++ unterstützt mehrere Paradigmen für einen Grund. Verwenden Sie Sie. Don ' T beschränken Sie sich am meisten überbewertet wird einer von Ihnen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Wenn macht es Sinn, eine Struktur, die irgendwo, warum würden Sie die Dinge zu komplizieren, über etwas anderes, das soll nicht dem Zweck entsprechen ?
In meinen Projekten, ich Neige dazu, verwenden Sie
struct
für einfache "Strukturen", die nur für einige triviale Daten.Wenn eine Daten-Struktur muss einen "smartness" und versteckte Felder/Methoden, dann wird es ein Klasse.
struct
zuverlässig erzählt Leser "ich bin ein dummer Daten-Struktur".Strukturen sind besonders nützlich für POD (plain old data) gekapselt. Es gibt noch viel mehr zu diesem Thema struct und class in C++
Meiner Meinung nach, Nein, das ist keine schlechte Idee. Wenn du gehst, um eine Klasse verwenden, in der gleichen Weise, wie
dann können Sie auch eine
struct
. Dies wird helfen, sicherzustellen, dass Sie nicht vergessen, zu erklären, alles öffentlich, und wenn Sie konsistent halten, dann werden zukünftige Entwickler (einschließlich der Zukunft), wird wissen, dass Sie beabsichtigt, dieses rein als Daten-Objekt, nicht etwas zu haben Methoden innerhalb.Es ist immer noch ziemlich viel ein Objekt von allen usability-Perspektiven, also Nein, tut es nicht zu Konflikten mit der OO-design.
Wenn Ihre Applikation die Sie braucht, Sie verwenden. Wenn Ihr design erfordert, dass Sie nur öffentlichen Mitglieder, die Sie verwenden können
struct
selbst...Ich benutze Strukturen all der Zeit für Objekte wie
unary_function
und so. Es gibt wirklich keinen Sinn, dass explizit deklarierenpublic
auf einer Klasse mit nur einoperator()
Methode. Außerdem, es ist nicht so, Sie sind Einladend, es vererbt zu werden.Manchmal mit Klassen mit Konstruktoren wird weniger Leistung effizienter als die Verwendung von structs, besonders beim kopieren von großen Mengen von Daten in arrays. Der Grund dafür ist, Sie können sicher verwenden Funktionen wie memcpy zum verschieben großer Blöcke von Daten, um den Platz, während mit einer Klasse eher zu einem iterator und/oder kopieren construtor.
Sehen Vorherige Frage von mir für einige weitere Diskussion über dieses.
struct { std::string name; };
undstruct { int id; };
sind beide gleich "pure data structures", während nur einer von Ihnen ist POD.Es klingt, besitzen Sie einen Ferrari Scaglietti und einem Lamborgini Espada, irgendwann fahren Ferarri, irgendwann fahren Sie Lamborghini....
Irgendwann Sie verwenden, struct, irgendwann Sie Klasse, da ist jeder true und false?
Es ist nichts falsch mit der Verwendung einer struct in C++, ich Neige dazu, zu vermeiden, mit den Klassen, es sei denn, ich habe genügend Zeit, um zu planen, was Ihr Zweck sein sollte.
Ich würde lieber struct-wie Klasse. Der erste Grund ist die Vermeidung von nicht initialisierte struct. Der andere Grund ist, dass Sie immer in der Lage, zum hinzufügen von convenience-Methoden, um die Struktur, wenn man wollte.
class
alsstruct
.struct
als gut. Ich weiß nicht genau verstehe, was Sie meinen.class
oder einestruct
. Sie sind die gleichen, abgesehen von Standard-Mitglied Sichtbarkeit (public
imstruct
,private
imclass
).Ich verwendet, um Folgendes zu tun:
da Sie standardmäßig Schnittstelle haben alle Ihre Mitglieder, die öffentlichkeit und standardmäßig Implementierungen haben Ihre Mitglieder private.