SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

MVP ShowCast 2013

C++11 e C+...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Grupo C & C++ Brasil
♦Nasceu ...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Eu, eu e eu
♦ Escovador de bi...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

wanderley at caloni at low le...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

O que é o C++?
♦Linguagem der...
SESSÃO: DESENVOLVIMENTO

Características
♦Tipagem estática
♦Genérica
♦Compatível com linguagem C
♦Compilada
♦Gerenciamento...
SESSÃO: DESENVOLVIMENTO

Sistemas alvo
♦System Programming
♦Embarcados
♦Softwares de prateleira
♦Server side

© 2013, MVP ...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

De onde viemos?

Fortran
Cobo...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++ é portável? Mas e o Java ...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

STL
♦Biblioteca padrão do C++...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++ sem STL é C com classes
♦...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Boost
♦Conjunto de biblioteca...
SESSÃO: DESENVOLVIMENTO

Versões do C++
♦C++84
♦C++98
♦C++03
♦C++11 (antes chamada de C++0x)
♦C++14

© 2013, MVP ShowCast....
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++84
♦C com classes
♦Primeir...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++98
♦Primeira versão padron...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++03
♦Correção de bugs no pa...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++TR1
♦TR1 = Technical Repor...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++11
♦Primeiro grande avanço...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

C++14
♦Correções e pequenas m...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Auto e decltype
♦auto

♦ Dedu...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Auto
C++98

C++11

map<int,st...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Uniform Initialization and De...
SESSÃO: DESENVOLVIMENTO

Inicialização
class class_d {
public:
float m_float;

string m_string;
wchar_t m_char;
};
int mai...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Nova sintaxe para funções e d...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Initializer lists
C++98

C++1...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Lambda
♦Possibilidade de cria...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Lambda
C++98

C++11

vector<i...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Nullptr
♦Constante para ponte...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Nova sintaxe para declarar fu...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Funções de uma classes
♦delet...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Rvalue reference
♦Possibilita...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Move semantics e Rvalue refer...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Move Semantics
class Matrix {...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

static_assert
♦Checar condiçõ...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Range-based for-loop
C++98

C...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

shared_ptr
C++98

C++11

widg...
SESSÃO: DESENVOLVIMENTO

E muito mais
♦ Variadic Templates
♦ String literals

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

• Enum t...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Compatibilidade do Visual C++...
SESSÃO: DESENVOLVIMENTO

TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO

Perguntas & Respostas

© 2013...
Próximos SlideShares
Carregando em…5
×

C++11 e C++14 no Visual Studio 2013 [MVP ShowCast 2013 - DEV - Ferramentas de desenvolvimento & Linguagens de programação]

2.069 visualizações

Publicada em

Palestra: C++11 e C++14 no Visual Studio 2013
Palestrante: Rodrigo Strauss
Realização: 10/12/2013 17h
Trilha: Ferramentas de desenvolvimento & Linguagens de programação
Sessão: Desenvolvimento
Evento: MVP ShowCast 2013
Site: http://mvpshowcast.azurewebsites.net

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.069
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.394
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

C++11 e C++14 no Visual Studio 2013 [MVP ShowCast 2013 - DEV - Ferramentas de desenvolvimento & Linguagens de programação]

  1. 1. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO MVP ShowCast 2013 C++11 e C++14 no Visual Studio 2013 Rodrigo Strauss Visual C++ Sócio Gerente – Intelitrader @rodrigostrauss © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  2. 2. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Grupo C & C++ Brasil ♦Nasceu da vontade de conhecer outras áreas de uso para C & C++ ♦Grupo de entusiastas/aficcionados ♦Aberto à todos ♦Organiza eventos para reunir profissionais, estudantes, e entusiasta ♦Grupo mais multilinguagem que eu conheço ♦groups.google.com/group/ccppbrasil/ ♦#ccppbrasil © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  3. 3. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Eu, eu e eu ♦ Escovador de bits ♦ Sócio Programador da Intelitrader ♦ 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? Fico com os dois, porque ainda não estudei BSD ou Solaris ♦ Três projetos Open Source egoístas: OmniObjects, Tio e Primo ♦ @rodrigostrauss © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  4. 4. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO wanderley at caloni at low level ♦Cofundador do grupo C & C++ Brasil ♦Programador entusiasta (Basic YES!): 1 ano ♦C/C++ Maniac: 2 anos ♦Segurança da Informação: 10 anos ♦Mercado Financeiro: 1 ano © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  5. 5. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO O que é o C++? ♦Linguagem derivada do C, adicionando os seguintes recursos: ♦ Orientação à objeto (classes) ♦ Exceções ♦ Templates © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  6. 6. SESSÃO: DESENVOLVIMENTO Características ♦Tipagem estática ♦Genérica ♦Compatível com linguagem C ♦Compilada ♦Gerenciamento de memória manual ♦Previsível ♦30 anos de uso e refinamento ♦Performance ♦Compatibilidade © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
  7. 7. SESSÃO: DESENVOLVIMENTO Sistemas alvo ♦System Programming ♦Embarcados ♦Softwares de prateleira ♦Server side © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
  8. 8. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO De onde viemos? Fortran Cobol Simula Java C++ Assembler BCPL © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. C C++11 C# 8
  9. 9. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++ é portável? Mas e o Java e C#? ♦Só citarei nomes: ♦ Qt/KDE ♦ Firefox ♦ Windows, Microsoft Office, SQL Server, Visual Studio, praticamente tudo vindo da MS ♦ Photoshop (que usa Boost) ♦ 99% dos jogos para computador e consoles. DirectX ♦ VMs do Java e .NET © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  10. 10. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO STL ♦Biblioteca padrão do C++ ♦Dividida em ♦ Containers (vector, map, list) ♦ Interator ♦ Abstração para acessar e percorrer itens de um container de maneira uniforme ♦ Algoritmos (find, sort) © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  11. 11. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++ sem STL é C com classes ♦E C++ sem Boost é C+=0.5f... ♦Java/C#/Python/[coloque-algo-aqui] são bons mas... ♦ Eu quero continuar usando C++. Me chame de masoquista se quiser ♦ Eu preciso de controle total, inclusive na alocação da memória ♦ Tudo que a minha empresa fez já está em C++ ♦ Preciso de algo multiplataforma de verdade © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  12. 12. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Boost ♦Conjunto de bibliotecas feitas pela comunidade (mais de 100) ♦Supre a necessidade de um Frameword ou Class Library abrangente, como as existente no C#, Java, Python, etc ♦Vários domínios ♦ Regex ♦ Asio (rede) ♦ FileSystem ♦ Metaprogramação ♦ Gerenciamento de memória (shared_ptr) ♦ Containers ♦ Comunicação entre processos © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  13. 13. SESSÃO: DESENVOLVIMENTO Versões do C++ ♦C++84 ♦C++98 ♦C++03 ♦C++11 (antes chamada de C++0x) ♦C++14 © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
  14. 14. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++84 ♦C com classes ♦Primeira implementação foi feita como um préprocessador C ♦Feita por Bjarne Stroustrup, pesquisador da AT&T © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  15. 15. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++98 ♦Primeira versão padronizada pela ISO ♦Contém as características principais, como classes e STL © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  16. 16. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++03 ♦Correção de bugs no padrão ♦Nenhuma funcionalidade nova, basicamente um bugfix do padrão C++98 © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  17. 17. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++TR1 ♦TR1 = Technical Report ♦Proposta para adiconar mais bibliotecas à STL ♦ std::function ♦ Tuplas ♦ Hash Tables (unordered_map) ♦ std::array ♦ Regex ♦Basicamente uma proposta para adicionar bibliotecas do Boost ao padrão C++ © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  18. 18. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++11 ♦Primeiro grande avanço da linguagem desde sua padronização ♦Uma tonelada de recursos foram adicionados à linguagem ♦Facilidades de linguagens modernas ♦Facilidade para ensino ♦Melhorias na biblioteca padrão ♦Acabar com “gambiarras” do Boost ♦ lambda ♦ assert ♦ bind © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  19. 19. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO C++14 ♦Correções e pequenas melhorias no padrão C++11 ♦ Lambdas genéricos ♦ Melhorias na dedução de tipos ♦ User defined literal para tipos da STL ♦ auto s = s”Bom dia José Arroela”; // isso é uma string STL © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  20. 20. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Auto e decltype ♦auto ♦ Deduz o tipo da variável pelo tipo da expressão rvalue na atribuição for(auto i = v.begin() ; i != v.end() ; ++i) {} auto a = 10; decltype(a) b; int x; double y; decltype(x + y) z; template <typename T, typename U> auto Add (T const & a, U const & b) -> decltype(a + b) { return a + b; } © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  21. 21. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Auto C++98 C++11 map<int,string>::iterator i = m.begin(); double const xlimit = config["xlimit"]; singleton& s = singleton::instance(); auto i = begin(m); auto const xlimit = config["xlimit"]; auto& s = singleton::instance(); binder2nd<greater> x = bind2nd( greater(), 42 ); auto x = [](int i) { return i > 42; }; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  22. 22. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Uniform Initialization and Delegating Constructors #include <string> int main() using namespace std; { class_a c1{}; class_a c1_1; class class_a { public: class_a c2{ "ww" }; class_a() {} class_a c2_1("xx"); class_a(string str) : m_string{ str } {} class_a(string str, double dbl) : m_string{ str }, m_double{ dbl } {} // order of parameters is the same as the constructor double m_double; class_a c3_1("zz", 5.5); string m_string; }; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. class_a c3{ "yy", 4.4 }; }
  23. 23. SESSÃO: DESENVOLVIMENTO Inicialização class class_d { public: float m_float; string m_string; wchar_t m_char; }; int main() { class_d d1{}; class_d d1{ 4.5 }; class_d d2{ 4.5, "string" }; class_d d3{ 4.5, "string", 'c' }; class_d d4{ "string", 'c' }; // erro de compilação class_d d5("string", 'c', 2.0 }; // erro de compilação } © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
  24. 24. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Nova sintaxe para funções e decltype template <typename Builder> auto makeAndProcessObject (const Builder& builder) -> decltype( builder.makeObject() ) { auto val = builder.makeObject(); // modifica o val return val; } © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  25. 25. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Initializer lists C++98 C++11 rectangle w( origin(), extents() ); complex<double> c ( 2.71828, 3.14159 ); int a[] = { 1, 2, 3, 4 }; vector<int> v; for( int i = 1; i <= 4; ++i ) v.push_back(i); rectangle w { origin(), extents() }; complex<double> c { 2.71828, 3.14159 }; int a[] { 1, 2, 3, 4 }; vector<int> v { 1, 2, 3, 4 }; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  26. 26. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO 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;}); © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  27. 27. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Lambda C++98 C++11 vector<int>::iterator i = v.begin(); for( ; i != v.end(); ++i ) { if( *i > min && *i < max ) break; } auto min = 10; auto max = 20; auto i = find_if( begin(v), end(v), [=](int i) { return i > min && i < max; } ); © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  28. 28. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO 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* void f(void*); void f(int); // … f(NULL); // chama a f(int) f(nullptr); // chama a f(void*) © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  29. 29. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO 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; } © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  30. 30. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Funções de uma classes ♦delete ♦default ♦final ♦override © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  31. 31. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Rvalue reference ♦Possibilita mover um rvalue ♦Aumenta performance por remover cópias © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  32. 32. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Move semantics e Rvalue references ♦ Possibilita descobrir quando um objeto é temporário e mover os dados ao invés de copiar. ♦ Usa nova sintaxe de referência Matrix operator+(const Matrix& a, const Matrix& b) { Matrix r; // copia os itens de a e b para a matriz r return r; } Matrix res = a+b; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  33. 33. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Move Semantics class Matrix { Representation rep; Matrix(Matrix&& a) // move constructor { rep = a.rep; // “rouba” os elementos da matriz a a.rep = {}; // zera a matrix temporária } }; Matrix res = a+b; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  34. 34. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO static_assert ♦Checar condições em tempo de compilação ♦Útil para programação com templates © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  35. 35. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Range-based for-loop C++98 C++11 for( vector<int>::iterator i = v.begin(); i != v.end(); ++i ) { total += *i; } for( auto d : v ) { total += d; } sort( v.begin(), v.end() ); sort( &a[0], &a[0] + sizeof(a)/sizeof(a[0]) ); sort( begin(v), end(v) ); sort( begin(a), end(a) ); © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  36. 36. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO shared_ptr C++98 C++11 widget* pw = new widget(); delete pw; auto pw = make_shared<widget>(); class node { vector<node*> children; node* parent; class node { vector<unique_ptr<node>> children; node* parent; © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  37. 37. SESSÃO: DESENVOLVIMENTO E muito mais ♦ Variadic Templates ♦ String literals ♦ Utf8 (u8), utf16 (u) e utf32 (U) • Enum tipado ♦ Sintaxe para inicialização uniforme ♦ Constructor delegate ♦ sizeof(SomeType::member); ♦ “Isso não é um shift!” ♦ Template alias ♦ Unrestricted unions © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft. TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO
  38. 38. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Compatibilidade do Visual C++ 2013 ♦Quase tudo do C++11 ♦ Mas não suporta tudo, o que tem causado críticas da comunidade ♦Algumas coisas de C++14 ♦ O padrão ainda não saiu, então o time do Visual C++ está implementando as coisas que faltaram no C++11, como make_unique ♦ Tabela extensiva em: ♦ http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
  39. 39. SESSÃO: DESENVOLVIMENTO TRILHA: FERRAMENTAS DE DESENVOLVIMENTO & LINGUAGENS DE PROGRAMAÇÃO Perguntas & Respostas © 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.

×