In diesem Schritt werden Sie sich mit Funktionsprototypen vertraut machen und lernen, wie Sie Header-Dateien verwenden, um Funktionen in C++ zu organisieren und zu deklarieren. Funktionsprototypen deklarieren den Namen, den Rückgabetyp und die Parameter einer Funktion, ohne die Implementierung (den Funktionskörper) bereitzustellen. Durch die Verwendung von Header-Dateien trennen Sie die Schnittstelle einer Funktion (ihre Deklaration) von ihrer Implementierung. Diese Trennung verbessert die Codeorganisation und erleichtert die Wartung und Wiederverwendung von Funktionen in mehreren Teilen Ihres Programms oder in mehreren Programmen.
Öffnen Sie die WebIDE und erstellen Sie drei Dateien im Verzeichnis ~/project
:
Zuerst erstellen Sie math_functions.h
:
touch ~/project/math_functions.h
Fügen Sie den folgenden Code in math_functions.h
ein:
#ifndef MATH_FUNCTIONS_H
#define MATH_FUNCTIONS_H
// Function prototypes for mathematical operations
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
double divide(double a, double b);
#endif // MATH_FUNCTIONS_H
.h
-Dateien werden für Deklarationen verwendet und enthalten Funktionsprototypen und andere Deklarationen, aber keine Implementierungen. Auf diese Weise können Sie Funktionen deklarieren, ohne sie zu implementieren. Die Direktiven #ifndef
, #define
und #endif
werden als Include-Guards (Inklusionsschutz) bezeichnet und verhindern die mehrfache Einbindung der Header-Datei, was zu Fehlern führen kann.
Als Nächstes erstellen Sie math_functions.cpp
:
touch ~/project/math_functions.cpp
Fügen Sie den folgenden Code in math_functions.cpp
ein:
#include "math_functions.h"
// Function implementations
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
double divide(double a, double b) {
// Check for division by zero
if (b == 0) {
return 0;
}
return a / b;
}
Diese .cpp
-Datei enthält die eigentlichen Implementierungen der Funktionen, die in der Header-Datei deklariert wurden.
Schließlich erstellen Sie main.cpp
:
touch ~/project/main.cpp
Fügen Sie den folgenden Code in main.cpp
ein:
#include <iostream>
#include "math_functions.h"
int main() {
// Demonstrate function calls from header file
int x = 10, y = 5;
std::cout << "Addition: " << x << " + " << y << " = " << add(x, y) << std::endl;
std::cout << "Subtraction: " << x << " - " << y << " = " << subtract(x, y) << std::endl;
std::cout << "Multiplication: " << x << " * " << y << " = " << multiply(x, y) << std::endl;
std::cout << "Division: " << x << " / " << y << " = " << divide(x, y) << std::endl;
return 0;
}
Diese main.cpp
-Datei bindet die math_functions.h
-Header-Datei ein, wodurch die Funktionsprototypen verfügbar werden. Sie kann dann die in math_functions.cpp
implementierten Funktionen verwenden.
Kompilieren Sie das Programm unter Verwendung mehrerer Quelldateien:
g++ math_functions.cpp main.cpp -o math_operations
./math_operations
Beispielausgabe:
Addition: 10 + 5 = 15
Subtraction: 10 - 5 = 5
Multiplication: 10 * 5 = 50
Division: 10 / 5 = 2
Erstellen wir ein weiteres Beispiel mit einer komplexeren Header-Datei:
Erstellen Sie calculator.h
:
touch ~/project/calculator.h
Fügen Sie den folgenden Code in calculator.h
ein:
#ifndef CALCULATOR_H
#define CALCULATOR_H
class Calculator {
public:
// Function prototypes for calculator operations
int add(int a, int b);
int subtract(int a, int b);
int calculate(int a, int b, char operation);
};
#endif // CALCULATOR_H
Diese Header-Datei deklariert eine Klasse namens Calculator
und ihre öffentlichen Methoden.
Erstellen Sie calculator.cpp
:
touch ~/project/calculator.cpp
Fügen Sie den folgenden Code in calculator.cpp
ein:
#include "calculator.h"
int Calculator::add(int a, int b) {
return a + b;
}
int Calculator::subtract(int a, int b) {
return a - b;
}
int Calculator::calculate(int a, int b, char operation) {
switch (operation) {
case '+': return add(a, b);
case '-': return subtract(a, b);
default: return 0;
}
}
Diese calculator.cpp
-Datei enthält die Implementierungen für die in der calculator.h
-Header-Datei deklarierten Methoden.
Erstellen Sie calculator_main.cpp
:
touch ~/project/calculator_main.cpp
Fügen Sie den folgenden Code in calculator_main.cpp
ein:
#include <iostream>
#include "calculator.h"
int main() {
Calculator calc;
std::cout << "Calculator Operations:" << std::endl;
std::cout << "10 + 5 = " << calc.calculate(10, 5, '+') << std::endl;
std::cout << "10 - 5 = " << calc.calculate(10, 5, '-') << std::endl;
return 0;
}
Diese Hauptdatei verwendet die Calculator
-Klasse und führt Operationen aus.
Kompilieren Sie das Taschenrechnerprogramm:
g++ calculator.cpp calculator_main.cpp -o calculator
./calculator
Beispielausgabe:
Calculator Operations:
10 + 5 = 15
10 - 5 = 5
Wichtige Punkte zu Funktionsprototypen und Header-Dateien:
- Header-Dateien (.h) deklarieren Funktionsprototypen, Klassen und andere Deklarationen. Sie fungieren als Schnittstelle und geben an, welche Funktionen verfügbar sind.
- Quelldateien (.cpp) implementieren die in den Header-Dateien deklarierten Funktionen. Sie enthalten den Code für die Funktionsweise der Funktionen.
#ifndef
, #define
und #endif
(Include-Guards) verhindern die mehrfache Einbindung derselben Header-Datei und vermeiden so potenzielle Kompilierungsfehler.
- Die Verwendung von Header-Dateien fördert die Modularität und Wiederverwendbarkeit des Codes.
- Header-Dateien ermöglichen es Ihnen, das "Was" (Deklarationen) vom "Wie" (Implementierungen) zu trennen.
- Sie erleichtern die Codeorganisation und machen ihn leichter zu warten und zu verstehen.
Sie können sich Header-Dateien wie eine Restaurantkarte vorstellen. Die Karte (Header) listet auf, was es zu bestellen gibt, während die Küche (Quelldatei) die eigentlichen Gerichte zubereitet.