Externe Dateien
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy — Lektion 1 von 104.
In C++ wird Code auf mehrere Dateien aufgeteilt und mithilfe von #include-Direktiven verbunden.
Eine separate Datei MyClass.h
#include <string>
class MyClass {
public:
std::string greet() {
return "Hello from MyClass!";
}
};Binden Sie es ein und verwenden Sie es in Ihrer Hauptdatei
#include <iostream>
#include "MyClass.h"
int main() {
MyClass obj;
std::cout << obj.greet() << std::endl;
return 0;
}Ausgabe:
Hello from MyClass!Verwenden Sie doppelte Anführungszeichen "" für Ihre eigenen Dateien und spitze Klammern <> für System-/Bibliotheks-Header. Die #include-Direktive kopiert den Inhalt der Datei vor der Kompilierung in Ihren Quellcode.
Aufgabe
EinfachBinden Sie die Header-Datei MyClass.h in main.cpp ein, erstellen Sie ein MyClass-Objekt und geben Sie das Ergebnis des Aufrufs von greet() aus.
Ausgabeformat: Greeting: <result>
Spickzettel
In C++ wird Code auf mehrere Dateien aufgeteilt und mithilfe von #include-Direktiven verbunden.
Verwenden Sie spitze Klammern <> für System- oder Bibliotheks-Header:
#include <iostream>
#include <string>Verwenden Sie Anführungszeichen "" für Ihre eigenen Header-Dateien:
#include "MyClass.h"Beispiel für eine Header-Datei MyClass.h:
#include <string>
class MyClass {
public:
std::string greet() {
return "Hello from MyClass!";
}
};Verwendung des Headers in main.cpp:
#include <iostream>
#include "MyClass.h"
int main() {
MyClass obj;
std::cout << obj.greet() << std::endl;
return 0;
}Probier es selbst
#include <iostream>
#include <string>
// TODO: Die MyClass-Header-Datei einbinden
int main() {
std::string testCase;
std::getline(std::cin, testCase);
// TODO: Ein MyClass-Objekt erstellen und greet() aufrufen
std::cout << "Test completed" << std::endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienC++ Build & KompilierungHeader-Dateien & QuelldateienNamensräume & GültigkeitsbereicheEinführung in OOP in C++Klassen vs. ObjekteDer 'this'-PointerMethoden (Elementfunktionen)Attribute (Datenelemente)Grundlagen zu Ctors & DtorsRückblick - Einfacher Taschenrechner4Klasseneigenschaften
Instanz- vs. statische MemberGetter und SetterConst-MemberfunktionenMutable-SchlüsselwortStatische Methoden und VariablenFriend-Funktionen & KlassenZusammenfassung - Bankkonto-Manager7Vererbung
Grundlagen der VererbungZugriffsstufen bei VererbungAufrufreihenfolge von Ctor & DtorÜberschreiben von MethodenVirtuelle Funktionen & VTableMehrfachvererbungVirtuelle VererbungRückblick - Mitarbeiter-Hierarchie2Speicherverwaltung
Stack vs. Heap SpeicherZeiger und ReferenzenDynamischer Speicher (new/delete)Smart Pointers in C++RAII in C++Rückblick – Dynamischer Array-Manager5Kapselung
Zugriffsspezifizierer in C++Zugriffsspezifizierer im DetailInformation HidingStruct vs. ClassVerschachtelte & innere KlassenRückblick - Studentenverwaltungssystem8Polymorphie
Kompilierzeit- vs. Laufzeit-PolymorphieFunktionsüberladungVirtuelle Funktionen – WiederholungRein virtuelle FunktionenAbstrakte KlassenInterface-Design in C++Dynamic Casting & RTTIZusammenfassung – Formen-Rechner3Konstruktoren & Destruktoren
StandardkonstruktorParametrisierter KonstruktorKopierkonstruktorVerschiebekonstruktorKonstruktor-InitialisierungslistenDelegierende KonstruktorenDestruktoren im DetailRule of Three / Five / ZeroZusammenfassung - String-Klasse6Operatorüberladung
Einführung in die OperatorüberladungArithmetische OperatorüberladungVergleichsoperatorüberladungStream-OperatorenZuweisungsoperatorüberladungÜberladen der [] und () OperatorenTypumwandlungsoperatorenRückblick - Matrix-Klasse9Templates
FunktionstemplatesKlassentemplatesTemplate-SpezialisierungVariadische TemplatesSFINAE & Type Traits GrundlagenRückblick - Generische Container