Classes e objetos

Estado, invariantes, encapsulamento, construção, destruição, métodos const e operadores.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Invariante do relógio

Representação: minutos_ com 0 <= minutos_ < 1440.

OperaçãoContrato
Relogio(h, m)0 <= h < 24, 0 <= m < 60; guarda 60*h + m
hora()minutos_ / 60
minuto()minutos_ % 60
avancar(q)0 <= q <= 1440; guarda (minutos_ + q) % 1440

Relogio(23, 50) guarda 1430. Avançar 25 dá 15, ou seja 0:15. Cópia anterior conserva 23:50. Valida antes de alterar.

Encapsular é preservar o significado, não espalhar getters. Uma hora nunca fica inválida à espera de correção externa.

Construção e destruição

  1. Constrói bases.
  2. Constrói membros pela ordem de declaração.
  3. Corre o corpo do construtor.
  4. Na saída, corre o corpo do destrutor e depois destrói membros e bases pela ordem inversa da construção.
  • Lista de inicialização constrói diretamente. Corpo atribui depois.
  • const e referências exigem inicialização.
  • explicit trava conversões implícitas indesejadas.
  • Não destruas manualmente um automático. O dono trata do dinâmico.

Como os erros interrompem a operação fica em Exceções e testes.

Métodos e operadores

  • hora() const corre em objeto constante. O tipo devolvido também conta para a promessa.
  • this aponta para o objeto da chamada. static pertence à classe e não tem this.
  • class é privada por defeito. struct é pública.
bool operator==(const Relogio& outro) const {
    return minutos_ == outro.minutos_;
}

Conserva o significado habitual do operador. Não cria operadores, não muda precedência, não redefine operação entre fundamentais. Com apontador dono, a cópia gerada só copia o endereço.

Construção em âmbitos.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.