capypad
0 Tage Serie
cpp / beginner
Snippet

Namespaces verstehen

Namespaces organisieren Code in benannten Bereichen und verhindern Namenskonflikte. Der std-Namespace enthält cout und andere Standard-Bibliothekselemente. Hier erstellen wir zwei benutzerdefinierte Namespaces (school und sports), die beide eine studentCount-Variable definieren, ohne Konflikte zu verursachen. Verwende den Bereichsauflösungsoperator (::), um auf Namespace-Mitglieder zuzugreifen, oder 'using namespace', um alle Mitglieder in den aktuellen Bereich zu bringen.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
namespace school {
int studentCount = 25;
void printInfo() {
std::cout << "School has " << studentCount << " students" << std::endl;
}
}
 
namespace sports {
int studentCount = 15;
void printInfo() {
std::cout << "Sports club has " << studentCount << " members" << std::endl;
}
}
 
int main() {
school::printInfo();
sports::printInfo();
using namespace school;
std::cout << "Direct access: " << studentCount << std::endl;
return 0;
}
Erklärung
1
namespace school {
Beginnt einen Namespace-Block namens 'school' um verwandten Code zu gruppieren
2
int studentCount = 25;
Variable innerhalb des school-Namespace
3
school::printInfo();
Ruft printInfo aus dem school-Namespace über den Bereichsauflösungsoperator auf
4
sports::printInfo();
Ruft printInfo aus dem sports-Namespace auf - gleicher Funktionsname, unterschiedlicher Namespace
5
using namespace school;
Bringt alle school-Namespace-Mitglieder in den aktuellen Bereich für direkten Zugriff