Ist es möglich zu definieren, mehrere Klassen in nur einem .cpp-Datei?
Arbeite ich an einem Projekt für die Schule und die Lehrer besteht darauf, dass alle Codes in einem Rutsch .cpp-Datei (für eine einfachere Einstufung auf seinem Teil). Ich möchte zum definieren von mehreren Klassen in dieser Datei. Werde ich auf Probleme stoßen Sie dabei?
- Sie könnten Ihre Klassen in Header was auch immer Sie wollen, dann führen gcc -E, und schicken die Lehrer die Ausgabe. Nicht wirklich, weil (a) Ihr Lehrer wird sich weigern, es zu Lesen, und (b) alle Einsätze von standard-Header-trigger-Plagiat-Warnungen. Aber wenn man sich anschaut, dass die Ausgabe nur einmal, und beachten Sie, dass es kompilierbar, wirst du sehen, dass Sie alles tun können, was Sie wie in einer cpp-Datei, die Sie tun können, im Header.
- Wenn Ihr Lehrer hat Sie gebeten, dass Sie senden eine einzelne Datei, dann ist es nicht vernünftig anzunehmen, dass Ihre Programmiersprache ermöglicht so ein Ding? Aus welchem Grund hast du Zweifel Ihrem Lehrer auf diese Besondere Sache?
- guter Punkt, da wir die Antwort kennen, aber bedenkt, dass Ausbilder oft Bedingungen wie: "ohne Verwendung von rekursiven aufrufen, nur Schleifen"; "nur über rekursive Aufrufe, keine Schleifen" und im Allgemeinen "hängen Sie kopfüber mit einer hand gefesselt hinter Ihrem Rücken". Kein Zweifel, für die gesunde Lehre Gründen, aber es bedeutet, dass Ihre Annahme ist nicht immer richtig oder vernünftig 😉
- Vielleicht sind die Lehrer nie gedacht, Sie würden mit mehr als einer Klasse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Regel, die Sie Folgen müssen (wie in java). Sie sind frei zu platzieren und die Namen der Klassen, wie auch immer benannte Dateien, die Sie mögen (außer der Endung).
Jedoch seine weitere Frage falls es das ist, gute Praktiken (nicht!).
Ja, Sie können. Dies ist leicht nachprüfbar.
Es ist kein problem, schreiben mehrere Klassen in eine einzige Datei. Es ist nur Frage der Wartung-Stil.
Können Sie perfekt haben mehrere Klassen deklariert und definiert, die in der gleichen Datei.
Müssen Sie vorsichtig sein, obwohl, wenn eine Klasse von einem anderen abhängt, das kommt später. Wenn eine Klasse A ist Mitglied einer anderen Klasse B ist, muss der compiler seine vollständige Erklärung (so dass er weiß, dass seine Größe), und Sie müssen Sie höher gestellt in der Datei. Wenn dieser member ist nur ein Zeiger ist, jedoch (mit einer Größe unabhängig von der Größe der Klasse spitz zu), eine einfache vorwärts-Deklaration der Spitzen-Klasse ist genug.
Beachten Sie, dass mit der
#include
Mechanismus, das ist ziemlich viel, was sowieso passiert: der Präprozessor wird "copy-paste" alle enthaltenen Dateien in die Datei kompiliert wird. Für den compiler, genauso ist es.In der Regel, nur sollte man mehrere Klassen in einer einzigen Datei, wenn...
Die Klassen sind sehr eng miteinander verknüpft. E. g., wenn eine Klasse definiert Ihre eigene iterator, dann wäre es vielleicht angebracht, dass die iterator-Klasse in der gleichen Datei wie die Klasse, die verwendet wird, um Durchlaufen.
Einer der Klassen ist für die öffentlichkeit bestimmt sind, und die verbleibenden Klassen werden verwendet, um es zu implementieren. E. g., dies gilt, wenn Sie die "pimpl" - idiom, wo das einzige Mitglied, dass die öffentliche Klasse enthält einen Zeiger auf die private Klasse. In diesem Fall kann es angebracht sein, um die private/hidden-Klassen in der Quelldatei entsprechend der public-Klasse, die Sie verwendet.
In beiden Fällen die Entscheidung, ob das "öffentliche Helfer" (z.B. iterator) und "private Helfer" (z.B. pimpl) - Klassen im gleichen source-file oder einer anderen source-Datei vorgenommen werden, sollten einmal für ein ganzes Projekt, und konsequent eingehalten werden.
Nur Skalierbarkeit/Wartbarkeit Fragen 😉 Es gibt keine strengen Regeln darüber.
Nicht. Sie werden nicht in Schwierigkeiten geraten. In C++ können Sie festlegen, mehrere Klassen in einer einzelnen Datei.
Sie werden keine Schwierigkeiten haben, zu definieren, mehrere Klassen in einer einzigen Datei.
Es ist nicht besonders gute Praxis für Produktionsanlagen, aber das ist nicht ein Problem für Hausaufgaben
Ja, Sie können. Dies muss unterstützt werden, denn sonst würden Sie nicht in der Lage, erstellen von verschachtelten Klassen.
Die Frage kommt aus der java/C# Stil-source-Vertretung. In C++ - Quellcode-layout ist sehr unterschiedlich. Eine Quelle Einheit /"cpp-Datei"/behandeln konnte, wie viel Erklärungen, wie Sie wollen schreiben. Allerdings ist es nicht notwendig, eine gute Strategie, da an einem gewissen Punkt müssen Sie mitteilen, für andere Klassen, wie Sie sich mit Ihren Klassen. In C++ eine Klasse kann eine getrennte definition und Erklärung-Abschnitt, und Sie sind in der Lage, Sie in verschiedenen Dateien. Die definition der Klasse wird geteilt zwischen anderen source-Dateien mit #include-Anweisungen, so dass Sie können verwenden Sie diese Klassen in einem Szenario, in dem die definition ist erforderlich. Wenn Sie den Umgang mit Klassen, die nur in einer source-Datei, können Sie verstecken es direkt in den source-Dateien, aber wenn Sie möchten, schließen Sie diese an andere Klassen, die Sie benötigen, um die definition in einem header-Datei.
Könnte es Ihnen helfen zu verbessern die Zusammenstellung Geschwindigkeit - vor allem, wenn Sie mit vorkompilierten Headern, aber caresully, weil pch-s sind nicht Teil der C++ - standard, und jeder, der compiler behandelt Sie in einer anderen Weise! - und die Flexibilität Ihres Codes. Dein Lehrer sollte sich dieser Tatsachen bewusst...
Ja, Sie könnten es tun ohne problem. entweder mehrere Klasse oder geschachtelte Klasse.