C++ Build & Kompilierung
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 2 von 104.
C++ wird in drei Phasen erstellt: Präprozessierung, Kompilierung und Verknüpfung.
1. Vorverarbeitung: #include-Direktiven werden aufgelöst, indem der Inhalt von Headern in Quelldateien kopiert wird
#include <iostream> // Systemheader
#include "my_file.h" // Eigener Header2. Kompilierung: Jede .cpp-Datei wird unabhängig in eine Objektdatei (.o) kompiliert
// math_utils.cpp kompiliert zu math_utils.o
// main.cpp kompiliert zu main.o3. Verknüpfung: Objektdateien werden zur endgültigen ausführbaren Datei zusammengeführt
// math_utils.o + main.o → program.exeDie Header-Datei deklariert, was vorhanden ist (Prototypen). Die .cpp-Datei stellt die eigentliche Implementierung bereit. Der Linker verbindet Aufrufe in main.cpp mit Implementierungen in anderen .cpp-Dateien.
Aufgabe
MittelDie Header-Datei math_utils.h deklariert zwei Funktionen. Implementiere sie in math_utils.cpp:
doubleValue(int x): gibtx * 2zurücksquare(int x): gibtx * xzurück
Stelle sicher, dass du die Header-Datei in deine .cpp-Datei einbindest.
Probier es selbst
#include <iostream>
#include "math_utils.h"
int main() {
int num;
std::cin >> num;
std::cout << "Double: " << doubleValue(num) << std::endl;
std::cout << "Square: " << square(num) << std::endl;
std::cout << "Build successful" << 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 & QuelldateienNamespaces & GültigkeitsbereichEinführung in OOP mit C++Klassen vs. ObjekteDer „this“-ZeigerMethoden (Member-Funktionen)Attribute (Datenmember)Grundlagen zu Ctors & DtorsRückblick – Einfacher Taschenrechner4Klassenattribute
Instanz- vs. statische MemberGetter und SetterConst-MemberfunktionenMutable-SchlüsselwortStatische Methoden und VariablenFriend-Funktionen und -KlassenZusammenfassung – Bankkontoverwaltung7Vererbung
Grundlagen der VererbungZugriffsebenen bei der VererbungAufrufreihenfolge von Ctor & DtorÜberschreiben von MethodenVirtuelle Funktionen & VTableMehrfachvererbungVirtuelle VererbungRückblick – Mitarbeiterhierarchie2Speicherverwaltung
Stack- vs. Heap-SpeicherZeiger und ReferenzenDynamischer Speicher (new/delete)Intelligente Zeiger in C++RAII in C++Rückblick – Dynamischer Array-Manager5Kapselung
Zugriffsbezeichner in C++Zugriffsbezeichner im DetailInformationsverbergungStruct vs. KlasseVerschachtelte und innere KlassenWiederholung – Studierendenverwaltungssystem8Polymorphie
Polymorphie zur Compilezeit vs. LaufzeitFunktionsüberladungVirtuelle Funktionen erneut betrachtetRein virtuelle FunktionenAbstrakte KlassenInterface-Design in C++Dynamic Casting & RTTIRückblick – Shape-Calculator3Konstruktoren & Destruktoren
StandardkonstruktorParametrisierter KonstruktorKopierkonstruktorMove-KonstruktorKonstruktor-InitialisierungslistenDelegierende KonstruktorenDestruktor im DetailDrei-/Fünf-/Null-RegelZusammenfassung – String-Klasse6Operatorüberladung
Einführung in die OperatorüberladungArithmetische OperatorüberladungVergleichsoperatorüberladungStream-OperatorenZuweisungsoperatorüberladungÜberladung der Operatoren [] und ()TypkonvertierungsoperatorenWiederholung – Matrix-Klasse9Templates
FunktionstemplatesKlassen-TemplatesTemplate-SpezialisierungVariadische TemplatesGrundlagen zu SFINAE und Type TraitsRückblick – Generischer ContainerÜbe selbstständig: Online-C++-Compiler