cpp / beginner
Snippet
Typ-Inferenz mit auto
Das auto-Schlüsselwort weist den Compiler an, den Typ der Variable aus dem Initialisierer abzuleiten. Dies reduziert die Umständlichkeit und funktioniert besonders gut mit komplexen Typen wie Iteratoren. Der tatsächliche Typ wird zur Compilezeit bestimmt, es gibt also keine Laufzeit-Kosten. Es ist besonders nützlich für lange Typnamen und Iterator-Deklarationen.
snippet.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
#include <iostream>#include <vector>#include <string>int main() {auto age = 25;auto name = std::string("Lisa");auto price = 19.99;std::cout << "Age: " << age << " (type matches int)" << std::endl;std::cout << "Name: " << name << " (type matches std::string)" << std::endl;std::cout << "Price: " << price << " (type matches double)" << std::endl;std::vector<int> numbers = {10, 20, 30, 40, 50};for (auto it = numbers.begin(); it != numbers.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;auto calculate = [](int a, int b) -> int {return a + b * 2;};std::cout << "Lambda result: " << calculate(3, 4) << std::endl;return 0;}
Erklärung
1
auto age = 25;
Der Compiler sieht das Literal 25 und leitet automatisch ab, dass der Typ int sein sollte
2
auto name = std::string("Lisa");
Der explizite Konstruktoraufruf teilt auto mit, std::string als Typ für name abzuleiten
3
auto it = numbers.begin()
Erstellt eine Iterator-Variable, ohne den umständlichen std::vector<int>::iterator Typ ausschreiben zu müssen
4
auto calculate = [](int a, int b) -> int
Verwendet auto für den Typ einer Lambda-Funktion, der sehr komplex wäre, explizit auszuschreiben