0 Tage Serie
cpp / intermediate
Snippet

Switch-Anweisung mit lokaler Initialisierung

C++17 hat die Möglichkeit eingeführt, eine Variable direkt innerhalb des Gültigkeitsbereichs der Switch-Anweisung zu initialisieren. Dies hält die Variable 'code' lokal im Switch-Block, verhindert eine Verschmutzung des Namensraums und verbessert die Speicher-Sicherheit, indem die Lebensdauer der Variable auf den Bereich beschränkt wird, in dem sie tatsächlich benötigt wird.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
int get_code() { return 404; }
int main() {
// C++17 init-statement in switch
switch (int code = get_code(); code) {
case 200:
std::cout << "Success" << std::endl;
break;
case 404:
std::cout << "Not Found: " << code << std::endl;
break;
default:
std::cout << "Unknown" << std::endl;
break;
}
return 0;
}
Erklärung
1
switch (int code = get_code(); code)
Initialisiert 'code' und verwendet es sofort als Bedingung für den Switch.
2
case 404:
Prüft, ob der initialisierte 'code' mit dem konstanten Wert 404 übereinstimmt.