cpp / beginner
Snippet
Das Auto-Schlüsselwort: Automatische Typableitung
Das 'auto' Schlüsselwort teilt dem Compiler mit, den Variablentyp automatisch aus dem Initialisierer abzuleiten. Dies reduziert den Umfang und ist besonders nützlich für komplexe Typen wie Iteratoren oder Lambda-Ausdrücke. Der Compiler bestimmt den Typ zur Kompilierzeit - es gibt keine Laufzeit-Kosten. Auto ist erforderlich bei der Arbeit mit Iteratoren und Lambda-Funktionen, und macht Code wartbarer wenn sich Typen ändern könnten.
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
#include <iostream>#include <vector>#include <typeinfo>int main() {auto number = 42;auto decimal = 3.14;auto letter = 'A';auto word = std::string("Hello");std::cout << "number: " << number << " (type: " << typeid(number).name() << ")" << std::endl;std::cout << "decimal: " << decimal << " (type: " << typeid(decimal).name() << ")" << std::endl;std::cout << "letter: " << letter << " (type: " << typeid(letter).name() << ")" << std::endl;std::vector<int> numbers = {1, 2, 3, 4, 5};for (auto it = numbers.begin(); it != numbers.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;auto sum = [](int a, int b) { return a + b; };std::cout << "Sum: " << sum(5, 3) << std::endl;return 0;}
Erklärung
1
auto number = 42;
Compiler leitet int-Typ aus dem Ganzzahl-Literal 42 ab
2
auto decimal = 3.14;
Compiler leitet double-Typ aus dem Fließkomma-Literal ab
3
auto word = std::string("Hello");
Compiler leitet std::string-Typ aus dem String-Literal ab
4
for (auto it = numbers.begin(); ...
Auto vereinfacht die Iterator-Deklaration für Container
5
auto sum = [](int a, int b) { return a + b; };
Auto fängt den Lambda-Funktionstyp automatisch ab