Namensräume & Gültigkeitsbereiche
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy — Lektion 4 von 104.
Namespaces gruppieren zusammengehörigen Code und verhindern Namenskonflikte. Der :: Bereichsauflösungsoperator greift auf Elemente innerhalb eines Namespaces zu.
Erstellen eines Namespace
namespace MathTools {
int add(int a, int b) {
return a + b;
}
}Zugriff mit dem Bereichsauflösungsoperator ::
int result = MathTools::add(5, 3); // result = 8Verwendung der Direktive, um die Angabe des Namespace jedes Mal zu vermeiden
using namespace MathTools;
int result = add(5, 3); // Entspricht MathTools::add(5, 3)Der std-Namensraum
std::cout << "Hello" << std::endl;
// oder
using namespace std;
cout << "Hello" << endl;Namespaces organisieren Code und verhindern Namenskollisionen. Der std-Namespace enthält alle Funktionen der C++-Standardbibliothek wie cout, cin, string und endl.
Aufgabe
MittelErstellen Sie Funktionen innerhalb des MathTools-Namespace:
add(int a, int b)— gibt die Summe zurückmultiply(int a, int b)— gibt das Produkt zurück
Deklarieren Sie diese in MathTools.h und implementieren Sie sie in MathTools.cpp.
Probier es selbst
#include <iostream>
#include "MathTools.h"
int main() {
int a, b;
std::cin >> a >> b;
std::cout << "Add: " << MathTools::add(a, b) << std::endl;
std::cout << "Multiply: " << MathTools::multiply(a, b) << 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