c++11

15

Click here to load reader

Upload: rodrigo-strauss

Post on 09-Jul-2015

9.361 views

Category:

Technology


3 download

DESCRIPTION

Apresentação feita no Oitavo Encontro de Programadores C & C++, no dia 17 de setembro de 2011

TRANSCRIPT

Page 1: C++11

Oitavo Encontro de Programadores C & C++

Vinicius Jarina: Integrando Lua e C++

Gianni Rossi: Desenvolvendo aplicações multi-plataformas em C++ para iOS e Android (NDK)

Rodrigo Strauss: C++11: Do que se trata e como ele vai facilitar a sua vida

Rodrigo Kumpera: Modelos de memória e porque você precisa saber disso

Marcelo Zimbres Silva: O framework ROOT: Não apenas para físicos.

Page 2: C++11

C++11

Rodrigo Strauss

www.1bit.com.br

@rodrigostrauss

Page 3: C++11

Eu, eu e eu

• Mantenho o site www.1bit.com.br, onde escrevo sobre C++

• Co-Fundador do grupo C & C++ Brasil e owner da lista

• Sócio Programador da www.intelitrader.com.br

• Server side is my side

• Uso C++ porque resolve meus problemas, uso bastante Python também

• mercado financeiro segurança da informação mercado financeiro segurança da informação .NET segurança da informação mercado financeiro

• Windows ou Linux? Eu fico com os dois, porque ainda não estudei BSD ou Solaris.

Page 4: C++11

Motivo do C++11

• Facilidades de linguagens modernas

• Facilidade para ensino

• Melhorias na biblioteca padrão

• Acabar com “gambiarras” do Boost

– lambda

– assert

– bind

Page 5: C++11

Adoção

• GCC

• Visual C++ 2010

• Intel C

• Mais detalhes em http://wiki.apache.org/stdcxx/C++0xCompilerSupport

Page 6: C++11

Bibliotecas TR11

• thread

• shared_ptr

• regex

• tuple

• array

• unordered_map (hash table)

Page 7: C++11

Lambda

• Possibilidade de criar funções anônimas

• Muito útil para algoritmos

• Boost bind nunca mais!

• Até onde eu sei, a implementação mais, digamos, detalhada– Especificação de captura e escopo

for_each(v.begin(), v.end(), [](string a) {cout << a;});

Page 8: C++11

Nullptr

• Constante para ponteiro nulo, e não mais um #define NULL 0

• Resolve o problema de overload de funções para int ou xpto*

Page 9: C++11

Auto e decltype

• auto

– Deduz o tipo da variável pelo tipo da expressão rvalue na atribuição

– auto a = 10;

– for(auto i = v.begin() ; i != v.end() ; ++i);

– decltype(a) b;

Page 10: C++11

Nova sintaxe para declarar funções

• Tipo de retorno depois da função

• auto func(int a, int b) -> int { return a + b; }

• Útil para templates

template<typename T>

auto func(T a, T b) -> decltype(a+b) { return a + b; }

Page 11: C++11

Fuções de uma classes

• delete

• default

• final

• Override

Page 12: C++11

Rvalue reference

• Possibilita mover um rvalue

• Aumenta performance por remover cópias

Page 13: C++11

static_assert

• Checar condições em tempo de compilação

• Útil para programação com templates

Page 14: C++11

E muito mais

• Variadic Templates• String literals

– Utf8 (u8), utf16 (u) e utf32 (U)

• Enum tipado• Sintaxe para inicialização uniforme• Constructor delegate• Range based loop• override e final• sizeof(SomeType::member);• “Isso não é um shift!”• Template alias• Unrestricted unions

Page 15: C++11

You Win. Flawless Victory. Fatality