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 switchswitch (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.