Skip to content

Commit 6511290

Browse files
🎉 adds auto keyword (section 14)
1 parent baae029 commit 6511290

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

docs/tutorial/secao014.md

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,67 @@
1-
# 14 - Auto Keyword
1+
# 14 - Auto Keyword
2+
3+
A keyword `auto` pode ser usada em variáveis e funções.
4+
5+
Uma variável declarada com auto possui tipo, e esse tipo é deduzido a partir do valor que é dado à ela.
6+
7+
Para usar auto durante a declaração de uma variável, essa variável deve ser inicializada para que o tipo possa ser
8+
deduzido.
9+
10+
```cpp
11+
auto a = 10; // o tipo de a é int.
12+
13+
auto b = (int)10; // o mesmo que o de cima, só que de forma explicita.
14+
15+
auto c; // inválido pois o tipo de c não póde ser deduzido.
16+
```
17+
18+
Em funções com retorno do tipo auto, o tipo do retorno é deduzido através do valor retornado.
19+
20+
```cpp
21+
auto sum(int a, int b) { return a + b; } // auto é deduzido como int
22+
23+
auto sum(int a, int b) -> int { return a + b + 3.14; } // forçando auto a ser deduzido como int
24+
25+
auto sum(int a, int b) { return a + b + 3.14; } // auto é deduzido como double
26+
```
27+
28+
Podemos usar parâmetros do tipo `auto` em lambdas.
29+
30+
```cpp
31+
#include <iostream>
32+
#include <numeric> // std::iota e std::accumulate
33+
#include <vector>
34+
35+
auto main() -> int
36+
{
37+
std::vector<int> array(5);
38+
std::iota(array.begin(), array.end(), 1);
39+
40+
auto const factorial = std::accumulate(
41+
array.begin(),
42+
array.end(),
43+
1,
44+
[](auto accum, auto current) -> int { return accum * current; });
45+
46+
std::cout << factorial; // 120
47+
}
48+
```
49+
50+
`auto` em loops
51+
52+
```cpp
53+
#include <iostream>
54+
#include <vector>
55+
#include <algorithm>
56+
57+
auto main() -> int
58+
{
59+
std::vector<int> array(5);
60+
std::generate(array.begin(), array.end(), [i = 1]() mutable -> int { return i++; });
61+
62+
for (auto element : array)
63+
{
64+
std::cout << element << '\n';
65+
}
66+
}
67+
```

0 commit comments

Comments
 (0)