Termos de C++
150 termos de C++ em português. RAII, templates, semântica de movimento e controle fino de desempenho.
A
- AddressSanitizerFerramenta do GCC e do Clang, ativada com -fsanitize=address, que instrumenta o programa para detectar em…
- ADLArgument-dependent lookup: regra que, na chamada de uma função sem qualificação, também procura o nome nos…
- alias de tipoNome alternativo para um tipo existente, criado com using ou typedef. Facilita ler tipos longos e permite…
- alinhamento de memóriaExigência de que um objeto fique em um endereço múltiplo de certo valor, dado por alignof. O compilador…
- autoPalavra-chave que faz o compilador deduzir o tipo da variável a partir do inicializador. Reduz repetição…
B
- bit castFunção std::bit_cast, do C++20, que reinterpreta os bits de um valor como outro tipo de mesmo tamanho…
- bloco de controleEstrutura alocada por shared_ptr que guarda as contagens de donos fortes e fracos, o deleter e, às vezes, o…
C
- C-style arrayArray nativo herdado de C, com tamanho fixo e sem métodos, como int v[5]. Decai para ponteiro ao ser passado…
- captura de lambdaLista entre colchetes que diz quais variáveis do escopo externo a lambda enxerga e se são copiadas ou usadas…
- categorias de valorClassificação das expressões em lvalue, xvalue e prvalue, com os agrupamentos glvalue e rvalue. Determina o…
- classeTipo definido pelo programador que agrupa dados e funções membro. Em C++, os membros são privados por padrão…
- classe abstrataClasse com ao menos uma função virtual pura, declarada com = 0. Não pode ser instanciada e serve de…
- CMakeSistema que gera arquivos de build, como Makefiles ou projetos do Visual Studio, a partir de um…
- comportamento indefinidoSituação em que o padrão não impõe regra alguma ao programa; tudo é permitido, de funcionar a travar. Surge…
- conceptRecurso do C++20 que nomeia um conjunto de requisitos sobre o tipo de um template. O compilador o verifica e…
- const correctnessPrática de marcar com const tudo que não deve mudar: parâmetros, métodos e variáveis. O compilador então…
- constevalEspecificador do C++20 para funções imediatas, que sempre precisam ser avaliadas na compilação. Chamar com…
- constexprEspecificador que marca variáveis e funções que podem ser avaliadas na compilação. Com argumentos…
- constinitEspecificador do C++20 que obriga uma variável estática ou thread_local a ser inicializada na compilação…
- construtorFunção especial com o nome da classe, sem tipo de retorno, chamada ao criar um objeto. Serve para…
- construtor de cópiaConstrutor que cria um objeto novo a partir de outro do mesmo tipo, com assinatura Classe(const Classe&)…
- construtor de movimentoConstrutor com assinatura Classe(Classe&&) que assume os recursos de um objeto temporário, deixando-o vazio…
- contêinerObjeto da biblioteca padrão que armazena uma coleção de elementos, como vector, list, map e set. Cada…
- copy and swapIdioma que implementa a atribuição recebendo o argumento por valor e trocando seu conteúdo com *this via…
- copy elisionOtimização em que o compilador omite a cópia ou o movimento de um objeto, construindo-o direto no destino…
- coroutineFunção do C++20 que pode suspender sua execução e retomá-la depois, usando co_await, co_yield ou co_return…
- CRTPPadrão em que uma classe herda de um template instanciado com ela mesma, como class D : Base<D>. Permite…
- CTADDedução de argumentos de template de classe, do C++17: o compilador deduz os parâmetros a partir do…
- custom deleterFunção ou objeto passado a unique_ptr ou shared_ptr para definir como o recurso é liberado, no lugar de…
D
- dangling pointerPonteiro ou referência que aponta para um objeto que já foi destruído ou liberado. Usá-lo é comportamento…
- data raceAcesso simultâneo de duas threads ao mesmo local de memória, em que ao menos um é escrita e não há…
- decltypePalavra-chave que devolve o tipo exato de uma expressão ou entidade, sem avaliá-la. Preserva referências e…
- destrutorFunção especial ~Classe chamada automaticamente quando o objeto sai de escopo ou é deletado. Libera os…
- destrutor virtualDestrutor declarado virtual na classe base, para que destruir um objeto derivado por um ponteiro para a base…
- dynamic castConversão verificada em tempo de execução entre ponteiros ou referências de uma hierarquia polimórfica…
E
- emplace backFunção de contêineres como vector que constrói o elemento direto dentro do contêiner, repassando os…
- empty base optimizationOtimização que faz a base vazia não ocupar espaço no objeto derivado, ao contrário de um membro vazio, que…
- enable shared from thisClasse base std::enable_shared_from_this que permite a um objeto já gerenciado por shared_ptr obter outro…
- enum classEnumeração com escopo e tipagem forte. Os valores ficam dentro do nome do enum e não convertem…
- especialização de templateDefinição de uma versão de um template para um tipo ou padrão específico. Pode ser total, com todos os…
- exceçãoMecanismo de tratamento de erros em que uma falha é sinalizada com throw e capturada em um bloco try/catch…
- explicitPalavra-chave que impede que um construtor de um argumento, ou um operador de conversão, seja usado em…
- expressão lambdaFunção anônima escrita no ponto de uso, com a forma [capturas](parâmetros){corpo}. Pode capturar variáveis…
- extensão de vida de temporárioRegra pela qual um temporário ligado a uma referência const& ou && local vive até o fim do escopo dessa…
- extern CEspecificador de ligação, escrito extern "C", que faz o compilador de C++ usar a convenção de nomes de C…
F
- false sharingPerda de desempenho quando threads diferentes escrevem em variáveis independentes que ficam na mesma linha…
- fold expressionExpressão do C++17 que aplica um operador binário a todos os elementos de um pacote de parâmetros, como…
- forwarding referenceParâmetro T&& em que T é deduzido, em template ou auto&&. Liga-se a lvalues e rvalues, e T guarda a…
- friendDeclaração que dá a uma função ou classe externa acesso aos membros privados e protegidos de uma classe. A…
- função deletadaFunção declarada com = delete, que não pode ser chamada. Qualquer uso gera erro de compilação, e serve para…
- função virtualFunção membro declarada com virtual, cuja versão chamada é escolhida em tempo de execução conforme o tipo…
G
H
- header fileArquivo .h ou .hpp com declarações de classes, funções e templates, incluído via #include. Separa a…
- herançaMecanismo em que uma classe derivada reaproveita os membros de uma classe base. Em C++ declara-se com…
- herança virtualForma de herança, declarada com virtual, em que uma base compartilhada por vários caminhos aparece uma só…
I
- if constexprCondicional do C++17 avaliado na compilação dentro de templates. O ramo não escolhido não é instanciado…
- include guardMacros de pré-processador #ifndef, #define e #endif que impedem que o mesmo header seja processado duas…
- inlineEspecificador que permite definir uma função ou variável em vários arquivos sem violar a regra de uma…
- invalidação de iteradoresSituação em que uma operação no contêiner, como push_back em um vector, torna iteradores, ponteiros ou…
- iostreamCabeçalho e biblioteca de fluxos de entrada e saída, que fornece cout, cin e cerr. Usa os operadores << e >>…
- iteradorObjeto que aponta para um elemento de um contêiner e permite percorrer os demais com ++ e *. Os algoritmos…
L
- link time optimizationOtimização feita na etapa de link, em que o compilador enxerga todos os arquivos objeto juntos e pode…
- lista de inicialização de membrosTrecho após os dois-pontos do construtor que inicializa membros e classes base antes do corpo. É a única…
- lock guardClasse RAII que trava um mutex na construção e o destrava na destruição, ao sair do escopo. Garante o unlock…
- lvalueExpressão que designa um objeto com identidade e endereço, ao qual se pode atribuir, como uma variável com…
M
- macroTrecho de texto definido com #define e substituído pelo pré-processador antes da compilação. Não conhece…
- membro estáticoMembro declarado com static dentro de uma classe, que pertence à classe e não a cada objeto. Todas as…
- memory orderParâmetro das operações atômicas, como memory_order_acquire, que define quais garantias de ordenação e…
- módulosRecurso do C++20 que substitui o #include por import, compilando cada módulo uma vez e exportando só o…
- most vexing parseAmbiguidade de sintaxe em que algo que parece criar um objeto, como T x(U());, é interpretado pelo…
- mutableEspecificador que permite modificar um membro de dados mesmo dentro de uma função membro const ou de um…
- mutexObjeto de exclusão mútua que garante que só uma thread por vez execute uma seção crítica. O std::mutex…
N
- name manglingCodificação do nome de funções e variáveis, com namespace e tipos dos parâmetros, no símbolo do arquivo…
- namespaceRegião nomeada que agrupa identificadores para evitar colisões. Tudo da biblioteca padrão vive em std, e…
- narrowing conversionConversão implícita que pode perder valor ou precisão, como double para int ou um int grande para char. Com…
- new and deleteOperadores que alocam e liberam memória dinâmica. new constrói um objeto no heap e devolve um ponteiro…
- nodiscardAtributo do C++17, escrito [[nodiscard]], que faz o compilador avisar quando o valor de retorno de uma…
- noexceptEspecificador que promete que a função não lança exceções. Permite otimizações e, principalmente, faz…
- nullptrLiteral do C++11 que representa um ponteiro nulo com tipo próprio, std::nullptr_t. Substitui NULL e o número…
O
- object slicingPerda da parte derivada de um objeto quando ele é copiado para uma variável do tipo base por valor. Só os…
- one definition ruleRegra que exige exatamente uma definição para cada função ou variável não inline no programa, e definições…
- operador de escopoO operador :: indica a qual namespace ou classe um nome pertence, como std::string ou Conta::total. Sozinho…
- ordem de avaliaçãoRegras que definem a ordem de cálculo das subexpressões. A ordem dos argumentos de uma função não é…
- overflow de inteiro com sinalEstouro de um int ou outro inteiro com sinal além do máximo ou mínimo do tipo. Em C++ isso é comportamento…
- overrideEspecificador colocado em uma função de classe derivada para declarar que ela sobrescreve uma função virtual…
P
- perfect forwardingTécnica de repassar argumentos a outra função preservando exatamente sua categoria de valor (lvalue ou…
- pimplIdioma que esconde os detalhes privados de uma classe atrás de um ponteiro para uma estrutura definida só no…
- placement newForma de new que constrói um objeto em um endereço de memória já alocado, sem alocar. O objeto precisa ser…
- polimorfismoCapacidade de tratar objetos de classes derivadas pela interface da base. Em C++, o comportamento dinâmico…
- ponteiroVariável que guarda o endereço de memória de outro objeto. Em C++, declara-se com asterisco e acessa-se o…
- ponteiro para membroPonteiro que identifica um membro de uma classe, declarado como int C::*p, e não um endereço absoluto. Só é…
- pragma onceDiretiva não padronizada, mas aceita pelos principais compiladores, que faz o arquivo ser incluído só uma…
R
- RAIIIdioma em que a posse de um recurso é atrelada ao tempo de vida de um objeto: o construtor adquire, o…
- range-based forForma do for que percorre qualquer sequência com begin e end, como for (auto& x : v). Elimina o controle…
- rangesBiblioteca do C++20 que trata intervalos como objetos e oferece algoritmos que aceitam contêineres inteiros…
- raw string literalLiteral de texto com prefixo R em que barras invertidas e aspas não precisam de escape, e as quebras de…
- reference collapsingRegra que reduz referências a referências, formadas por templates ou aliases, a uma só: apenas && com &&…
- referênciaApelido para um objeto que já existe, declarado com &. Precisa ser inicializada na declaração, não pode ser…
- referência constanteParâmetro ou variável do tipo const T&, que evita copiar o objeto e impede a alteração por meio dela. É o…
- regra do zeroPrincípio de projetar classes sem destrutor nem funções especiais escritas à mão, deixando o compilador…
- regra dos cincoSe uma classe define manualmente destrutor, construtor de cópia, atribuição por cópia, construtor de…
- requires expressionExpressão do C++20, como requires(T a) { a + a; }, que testa na compilação se certas operações são válidas…
- rvalueExpressão temporária sem nome persistente, como um literal ou o resultado de uma função que retorna por…
- rvalue referenceReferência declarada com && que só se liga a rvalues, ou seja, a temporários. É o mecanismo que permite…
S
- semântica de movimentoRecurso do C++11 que permite transferir os recursos de um objeto temporário ou descartável para outro, em…
- SFINAERegra pela qual uma falha de substituição de tipos ao deduzir um template não é erro, apenas remove aquela…
- shared pointerstd::shared_ptr é um smart pointer de posse compartilhada: vários donos mantêm uma contagem de referências e…
- sizeofOperador avaliado na compilação que devolve o tamanho em bytes de um tipo ou objeto, como valor do tipo…
- small string optimizationOtimização das implementações de std::string que guarda textos curtos dentro do próprio objeto, sem alocar…
- smart pointerClasse que se comporta como ponteiro, mas gerencia o tempo de vida do objeto apontado e o libera…
- sobrecarga de funçãoDefinir várias funções com o mesmo nome, mas parâmetros diferentes em número ou tipo. O compilador escolhe a…
- sobrecarga de operadorRecurso que dá significado próprio a operadores como +, == e << para tipos do usuário, escrevendo funções…
- spaceship operatorOperador <=> do C++20, de comparação de três vias, que indica menor, igual ou maior. Com = default, o…
- stack unwindingProcesso de desfazer a pilha de chamadas quando uma exceção é lançada, destruindo na ordem inversa os…
- static castConversão explícita checada na compilação entre tipos relacionados, como int e double ou base e derivada…
- static initialization order fiascoBug em que um objeto global de uma unidade de tradução usa outro global de outra unidade antes de ele ser…
- std allocatorObjeto que o contêiner usa para obter e devolver memória, sem fixar como. O padrão usa operator new, mas…
- std arrayContêiner de tamanho fixo, definido em tempo de compilação, que embrulha um array nativo. Guarda os…
- std atomicModelo de tipo que torna leituras e escritas indivisíveis entre threads, como atomic<int>. Operações como ++…
- std functionInvólucro polimórfico da biblioteca padrão que guarda qualquer objeto chamável com uma assinatura dada, como…
- std make uniqueFunção que cria um objeto no heap e já o entrega embrulhado em um unique_ptr, passando os argumentos ao…
- std mapContêiner associativo ordenado que guarda pares chave e valor, mantidos na ordem crescente das chaves…
- std moveFunção que não move nada: apenas converte o argumento em rvalue reference, sinalizando que seus recursos…
- std optionalTipo do C++17 que guarda um valor ou nada, indicando ausência sem recorrer a ponteiro nulo ou valor mágico…
- std pairEstrutura da biblioteca padrão que agrupa dois valores, possivelmente de tipos diferentes, acessíveis por…
- std stringClasse que guarda texto de tamanho variável e gerencia a própria memória. Oferece concatenação com +, busca…
- std threadClasse da biblioteca padrão que cria e representa uma thread de execução, iniciada na construção com uma…
- std variantUnião com tipo seguro do C++17 que guarda um valor de um dos tipos listados. Sabe qual tipo está ativo…
- std vectorContêiner da STL que guarda elementos contíguos em memória e cresce dinamicamente. É o contêiner padrão em…
- STLBiblioteca de contêineres, iteradores e algoritmos genéricos que deu origem à biblioteca padrão de C++. Hoje…
- strict aliasingRegra que proíbe acessar um objeto por um ponteiro de tipo incompatível, como ler um float por int*. O…
- string viewVisão leve, do C++17, de uma sequência de caracteres que já existe: guarda só ponteiro e tamanho, sem copiar…
- structTipo composto igual a class, exceto que os membros e a herança são públicos por padrão. Por convenção, é…
- structured bindingSintaxe do C++17, como auto [a, b] = expr, que declara vários nomes a partir de um par, tupla, struct ou…
T
- templateMecanismo de programação genérica em que funções e classes são escritas com parâmetros de tipo ou valor. O…
- thisPonteiro implícito disponível dentro de funções membro não estáticas, que aponta para o objeto sobre o qual…
- thread localEspecificador de duração de armazenamento, escrito thread_local, em que cada thread tem a própria cópia da…
- translation unitO arquivo-fonte depois que o pré-processador expandiu todos os #include e macros. É a unidade que o…
- type erasureTécnica que esconde o tipo concreto atrás de uma interface uniforme, combinando template e herança interna…
- type traitsBiblioteca <type_traits> de templates que consultam ou transformam propriedades de tipos em tempo de…
- typenamePalavra-chave usada em templates para declarar parâmetros de tipo e para avisar o compilador de que um nome…
U
- undefined referenceErro do linker que indica que um símbolo foi declarado e usado, mas nenhuma definição foi encontrada nos…
- unique pointerstd::unique_ptr é um smart pointer de posse exclusiva: um só dono, sem cópia, apenas movimento. Libera o…
- user-defined literalSufixo próprio para literais numéricos ou de texto, como 5_km, criado com um operador de literal. Dá unidade…
V
- variadic templateTemplate que aceita um número variável de argumentos de tipo, declarado com um pacote de parâmetros…
- vazamento de memóriaMemória alocada dinamicamente que nunca é liberada, porque o último ponteiro para ela se perdeu ou o delete…
- versão do padrãoEdição da norma ISO de C++ usada na compilação, como C++11, 14, 17, 20 ou 23, escolhida com flags como…
- volatileQualificador que diz ao compilador que o valor pode mudar fora do programa, então toda leitura e escrita…
- vtableTabela de ponteiros para funções virtuais que as implementações de C++ usam no despacho dinâmico. Cada…