150 likes | 251 Views
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
E N D
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.
C++11 Rodrigo Strauss www.1bit.com.br @rodrigostrauss
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.
Motivo do C++11 • Facilidades de linguagens modernas • Facilidade para ensino • Melhorias na biblioteca padrão • Acabar com “gambiarras” do Boost • lambda • assert • bind
Adoção • GCC • Visual C++ 2010 • Intel C • Mais detalhes em http://wiki.apache.org/stdcxx/C++0xCompilerSupport
Bibliotecas TR11 • thread • shared_ptr • regex • tuple • array • unordered_map (hash table)
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;});
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*
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;
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; }
Fuções de uma classes • delete • default • final • Override
Rvalue reference • Possibilita mover um rvalue • Aumenta performance por remover cópias
static_assert • Checar condições em tempo de compilação • Útil para programação com templates
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