C++ language
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Esta é uma breve referência sobre o atual sintaxe da linguagem C++.
Índice |
[editar] Tópicos gerais
[editar] Preprocessador
[editar] Comentários
[editar] Palavras-chave
[editar] Tabela ASCII
[editar] Seqüências de escape
[editar] História do C++
[editar] Controle de fluxo
[editar] Declarações de execução condicional
Declarações condicionais executam diferentes caminhos de código de acordo com o valor da expressão dada.
- if executa código condicionalmente
- switch executa o código de acordo com o valor de um argumento integral
[editar] Declarações de iteração
Instruções de iteração executam um caminho de código repetidas vezes.
- for executa laço, especificando a inicialização, comparação e incremento
- range-for executa laço, sobre uma série (a partir do C++ 11)
- while executa laço, verificando a condição antes de cada iteração
- do-while executa laço, verificando a condição após cada iteração
[editar] Declarações de salto
Declarações de salto continuam a execução do programa em um local diferente.|Jump statements continue program execution at a different location.
- continue pula a parte restante do corpo do laço
- break termina o laço
- goto continua a execução em outro local
- return termina a execução da função
[editar] Funções
O mesmo código pode ser reutilizado em diferentes locais no programa.
- declarações de funções declarar funções
- declarações de fuções lambda declarar funções lambda (a partir do C++ 11)
- Modelos de função declarar modelos de função
- especificadores Inline indícios de que o compilador insere o corpo de uma função diretamente no código de chamada.
- especificações de exceção declarar que uma função lança apenas exceções específicas (obsoleta)
- especificador noexcept declara se função lança ou não algum tipo de exceção (a partir do C++ 11)
[editar] Exceções
Exceções são utilizadas como uma alternativa mais robusta para sinalizar condições de erro ao invés de códigos de retorno de funções e variáveis de erro globais.
- lançar exceções sinalização de error e transferência do controle para manipuladores de erro
- blocos try-catch capturar exceções provenientes de blocos de código específicos
- especificador noexcept e operador noexcept definem e testam se as expressões lançam exceções (a partir do C++ 11)
[editar] Namespaces (Espaço de Nomes)
Namespaces fornecem uma maneira de evitar conflitos de nomes em grandes projetos.
- declarações de namespace declarar namespaces
- namespaces apelidados declarar nomes alternativos para namespaces existentes
[editar] Tipos
- tipos fundamentais define caractere básico, inteiro e tipos de ponto flutuante
- tipos de ponteiro define tipos que armazenam uma posição de memória
- tipos de compostos define tipos que possuem vários membros de dados (essencialmente o mesmo que classe)
- tipos de enumeração define tipos capazes de manter apenas um dos valores especificados
- tipos de união define tipos que podem armazenar dados em diferentes representações
- tipos de função define assinaturas de chamadas de função, isto é, os tipos de argumentos e o tipo de retorno
- especificador decltype define um tipo equivalente ao tipo de uma expressão (a partir do C++ 11)
[editar] Especificadores
- especificadores cv especificadores de constância e volatilidade dos tipos
- especificadores de duração do armazenamento especifica a duração do armazenamento de tipos
- especificador constexpr especifica que o valor de uma variável ou função pode ser computada em tempo de compilação (a partir do C++ 11)
- especificador auto especifica que o tipo deve ser definido a partir da expressão, atribuida a variável (a partir do C++ 11)
- especificador alignas especifica que o armazenamento para a variável deve ser alinhado por um valor específico (a partir do C++ 11)
[editar] Inicialização
Sempre que uma variável é declarada, e sempre que um objeto temporário é criado, o valor inicial do novo objeto é fornecido através de um dos seguintes mecanismos:
- inicialização padrão ocorre quando nenhum inicializador é fornecido
- inicialização por valor ocorre quando o inicializador é um conjunto vazio de parênteses
- inicialização zero inicializa cada bit do objeto com zero
- inicialização por cópia inicializa um objeto através de um outro objeto do mesmo tipo
- inicialização direta fornece o valor inicial ou a lista de argumentos do construtor, dentro de parênteses
- inicialização agregada fornece valores iniciais para cada membro de uma matriz ou uma estrutura sem construtor
- lista de inicialização fornece uma lista corrida de valores arbitrários, que pode inicializar um std::vector ou std::map (a partir do C++ 11)
- inicialização constante inicializa todos os objetos constantes estáticos antes de inicializar qualquer outra coisa
- inicialização de referência liga referências a objetos e prolonga a vida útil dos temporários
[editar] Literais
Literais são os símbolos de um programa C++, que representam valores constantes, embutidos no código fonte.
- literal inteiro são números em decimal, octal ou hexadecimais do tipo inteiro.
- literal caractere são caracteres individuais do tipo char, char16_t, char32_t, ou wchar_t
- literal de ponto flutuante são valores do tipo float, double ou long double
- literal de string são sequências de caracteres, que podem ser estreita, multibyte, ou larga
- literal booleanos são valores do tipo bool, isto é true e false
- nullptr é um literal que especifica um valor nulo para o ponteiro (a partir do C++ 11)
- literal definido pelo usuário são valores constantes de um tipo especificado pelo usuário (a partir do C++ 11)
[editar] Expressões
Uma expressão é uma seqüência de operadores e operandos que especifica uma computação. Uma expressão pode resultar em um valor e pode causar efeitos secundários.
- categorias de valor (lvalue, rvalue, glvalue, prvalue, xValue) classifica expressões por seus valores
- ordem de avaliação ordena a avaliação dos argumentos e sub-expressões especificando a ordem em que os resultados intermédios são obtidos
- operators permite o uso de sintaxe comumente encontrada em matemática
| Common operators | ||||||
|---|---|---|---|---|---|---|
| atribuição | incrementNJdecrement | aritmética | lógico | comparação | memberNJaccess | outro |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
| Special operators | ||||||
|
static_cast converte um tipo para outro
tipo compatível Original: static_cast converts one type to another compatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. dynamic_cast converte classe base virtual para class
derivados Original: dynamic_cast converts virtual base class to derived class The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. const_cast converte tipo para tipo compatível com diferentes cv qualifiers
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. reinterpret_cast converte tipo de type
incompatíveis Original: reinterpret_cast converts type to incompatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. new aloca memory
Original: new allocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. delete desaloca memory
Original: delete deallocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof consulta o tamanho de um type
Original: sizeof queries the size of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof... consulta o tamanho de um bloco de parâmetros (a partir do C++ 11)
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. typeid consulta o tipo de informação de uma type
Original: typeid queries the type information of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. noexcept verifica se uma expressão pode lançar uma (a partir do C++ 11)
exceção Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. alignof consultas exigências de alinhamento de um (a partir do C++ 11) tipo
Original: alignof queries alignment requirements of a type (a partir do C++ 11) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
- precedência do operador define a ordem em que os operadores são vinculados a seus argumentos
- representações alternativas grafias alternativas para alguns operadores
[editar] Utilitários
Tipos
- declarações typedef criação de sinônimos para os tipos
- digite declarações alias criar sinônimos para os tipos
- atributos definir informações adicionais sobre variáveis (a partir do C++ 11)
Casts
- conversões implícitas conversões implícitas de um tipo para outro
- conversão
const_cast - conversão
static_cast - conversão
dynamic_cast - conversão
reinterpret_cast - conversão explícita conversão usando notação no estilo C e notação funcional
Alocação de memória
- nova expressão aloca memória dinamicamente
- excluir expressão desaloca memória dinamicament
[editar] Classes
Classes fornecem o conceito de programação orientada a objetos em C++.
- declarações de classe declarar de classes
-
thisponteiro víncula a instância corrente de uma classe com métodos membros - especificadores de acesso determinar a visibilidade dos membros da classe
- especificador friend concede privilégios de acesso a partes íntimas / protegidas para classes ou funções não-membros
- listas de inicialização inicializar dados membro de classe
[editar] Classe propriedades específicas de função
- especificador de função virtual declara que uma função é virtual
- especificador de substituição declara que uma função virtual substitui outra função virtual (a partir do C++ 11)
- especificador final declara que uma função virtual não pode ser substituída em uma classe herdada (a partir do C++ 11)
- especificador de função explícita declara que um construtor ou operador de conversão não pode ser usado em conversões implícitas (a partir do C++ 11)
- especificador função estática declara que a função não usa dados da classe
- especificador de função cv declara que uma função membro só pode ser usado em objetos qualificados como cv
[editar] Funções membro especiais
- inicializa o objeto com conteúdo padrãoOriginal:construtor padrão</div> initializes the object with default contentsOriginal:default constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - inicializa o objeto com o conteúdo de outro objetoOriginal:copiar construtor</div> initializes the object with the contents of another objectOriginal:copy constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - inicializa o objeto com o conteúdo do objeto, ou temporárias, minimizando (a partir do C++ 11) sobrecarga cópiaOriginal:mover construtor</div> initializes the object with the contents of other, temporary object, minimizing copying overhead (a partir do C++ 11)Original:move constructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - substitui o conteúdo do objecto com o conteúdo de outro objectoOriginal:operador de atribuição</div> replaces the contents of the object with the contents of another objectOriginal:assignment operatorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - substitui o conteúdo do objeto com o conteúdo do objeto, ou temporárias, minimizando (a partir do C++ 11) sobrecarga cópiaOriginal:mover operador de atribuição</div> replaces the contents of the object with the contents of other, temporary object, minimizing copying overhead (a partir do C++ 11)Original:move assignment operatorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - alegou recursosOriginal:destruidor</div> releases claimed resourcesOriginal:destructorThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[editar] Modelos
You can help to correct and verify the translation. Click here for instructions.
- declara um modelo de classeOriginal:declaração de modelo de classe</div> declares a class templateOriginal:class template declarationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - declara um modelo de funçãoOriginal:declaração de modelo de função</div> declares a function templateOriginal:function template declarationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - define um modelo existente para um tipo específicoOriginal:especialização de modelo</div> defines an existing template for a specific typeOriginal:template specializationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - permite o uso de listas de tipos em (a partir do C++ 11) modelosOriginal:pacotes de parâmetros</div> allows the use of lists of types in templates (a partir do C++ 11)Original:parameter packsThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[editar] Otimizações
- permite que qualquer transformação de código que não muda a saídaOriginal:A regra como-se</div> allows any code transformation that doesn't change the outputOriginal:The as-if ruleThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - , incluindo RVO e NRVO, faz passagem por valor a abordagem preferida em muitas situações.Original:Elisão cópia</div>, including RVO and NRVO, makes pass-by-value the preferred approach in many situations.Original:Copy elisionThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - faz herança múltipla de interfaces ou classes políticas sobrecarga livres e é necessário para o padrão de layout de tipos.Original:Otimização base vazia</div> makes multiple inheritance from interfaces or policy classes overhead-free and is required for standard-layout types.Original:Empty base optimizationThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[editar] Diversos
- permite o uso de código de montagem ao lado de código C + +Original:Assembly embutido</div> allows the use of assembly code alongside C++ codeOriginal:Inline assemblyThe text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

