Última atualização:2026-10-15
struct vs class em C++¶
Sobre o autor:¶
Conta oficial do WeChat:

Sobre o conteúdo de struct em C e C++: veja struct那些事
Em linhas gerais, struct é mais adequado para ser visto como a implementação de uma estrutura de dados, enquanto class é mais adequado para ser visto como a implementação de um objeto.
Diferenças:
A diferença mais essencial é o controle de acesso padrão.
A permissão de acesso padrão na herança: em struct ela é public; em class, private.
Como implementação de uma estrutura de dados, struct tem, por padrão, o controle de acesso aos dados público (public), enquanto class, como implementação de um objeto, tem, por padrão, o controle de acesso às suas variáveis membro privado (private).
Perguntas frequentes¶
Qual a única diferença entre struct e class?¶
Acesso e herança padrão: struct é public, class é private. Fora isso, são totalmente equivalentes no C++.
Um struct pode ter construtores e funções virtuais?¶
Sim. Um struct em C++ é uma classe: suporta construtores, destrutores, funções virtuais e templates.
Quando usar struct?¶
Por convenção, struct para agregados de dados sem invariantes; class quando há encapsulamento ou invariantes.
Tópicos relacionados¶
- Funções virtuais puras e classes abstratas em C++ | C++那些事
- Asserções com assert em C++ | C++那些事
- Bit fields em C++ | C++那些事
- Implementando polimorfismo de C++ em linguagem C | C++那些事
- const em C++ explicado: constantes, ponteiro const vs ponteiro para const | C++那些事
- A família completa do const em C++ | C++那些事
- O operador de desreferência * em C++ | C++那些事
- Inicialização e atribuição em C++ | C++那些事
- Formas de retornar múltiplos valores em C++ | C++那些事
- A palavra-chave mutable em C++ | C++那些事