Please enable JavaScript.
Coggle requires JavaScript to display documents.
Introdução - MM3 - Coggle Diagram
Introdução - MM3
Standard class string
Estrutura
Implementada como:
array dinâmico de caracteres
Memória:
gerenciada automaticamente (resize implícito)
Operadores suportados
Concatenação:
+, +=
Comparação:
==, !=, <, <=, >, >=
Comparações funcionam diretamente entre strings
Inicialização
String literal:
"texto"
Número de caracteres
Outra string (ou substring)
Atribuição
Outra string
Literal
Caractere único
Manipulação
Inserção:
insert
Remoção:
erase
Substituição:
replace
Busca
find
rfind
Valor especial:
string::npos
Acesso a caracteres
s[index]
s.at(index):
com verificação de limites (lança exceção)
Classes de armazenamento
Definir:
visibilidade
tempo de vida
localização
Tipos de storage specifiers
auto
register
static
extern
Escopo (scope)
Bloco (local)
Arquivo (file scope)
Global (program scope)
Tempo de vida
Automático:
destruído ao sair do bloco
Estático:
persiste durante o programa
Comportamentos
static:
mantém valor entre chamadas
extern:
variável definida em outro arquivo
register:
sugestão de otimização (pode ser ignorado)
Inicialização
Objetos static e extern:
inicializados com 0 por padrão
Translation Unit
Um arquivo fonte individual
Funções
Conceitos fundamentais
Protótipo (declaração)
Definição
Parâmetros vs argumentos
Formas de passagem
Por valor:
cópia
Por referência:
alias
Por ponteiro:
endereço
Funções inline
Sugestão ao compilador:
evitar overhead de chamada
Argumentos
Valores default em parâmetros
Evitam sobrecarga excessiva
Overloading (sobrecarga)
Mesmo nome
Diferentes assinaturas
Características gerais
Modularização
Reuso de código
Separação de responsabilidades
Namespaces
Objetivo: evitar conflitos de nomes
namespace nome { ... }
Uso
Operador de escopo:
::
Exemplos:
std::cout
::x (global)
Podem ser:
divididos (não contíguos)
aninhados
Tipos de uso
Using declaration:
using std::cout;
Using directive:
using namespace std;
Definir namespaces em headers
Evitar poluição global
Referencias
Características
Alias para variável existente
Não ocupa nova memória
Deve ser inicializada
Não pode mudar referência após inicialização
Benefícios
Evita cópias
Melhor performance
Permite múltiplos retornos
Retorno por referência
Objeto deve continuar existindo após retorno
Ponteiros
Armazenam endereços de memória
Operadores
"&" -> obtém endereço
"*" -> acessa valor (indireção)
Propriedades
Possui endereço próprio
Pode mudar para apontar outro objeto
Ponteiros vs Referencias
Referencias:
Memória: não ocupa extra
Reatribuição: não
Sintaxe: mais simples
Flexibilidade: menor
interfaces simples
Ponteiros
Memória: ocupa
Reatribuição: sim
Sintaxe: mais explicita
Flexibilidade: maior
Estruturas complexas/dinâmicas