Qual é a diferença entre struct e class em C++? Quando usar cada um?
Saudações, colegas!
Acabei de começar a estudar C++ e não consigo entender a diferença entre struct e class. À primeira vista, eles parecem quase iguais — ambos permitem agrupar dados e métodos. Mas por que então a linguagem tem duas palavras-chave para a mesma coisa?
Li que em C (de onde veio struct) as estruturas armazenam apenas dados, e em C++ adicionaram métodos a elas. Mas eis um exemplo:
```cpp
struct Point {
int x, y;
void print() { cout << x << ", " << y; }
};
class Circle {
int radius;
void draw() { /* ... */ }
};
```
Se eu tentar fazer assim:
```cpp
Point p;
p.x = 10; // Funciona
Circle c;
c.radius = 5; // Erro! radius é private
```
Por que radius de repente se tornou private? Eu não especifiquei nada disso! Em struct é o oposto — os campos são públicos por padrão. Essa é a única diferença?
E mais um ponto: vi pessoas usando struct para pequenas estruturas de dados (como ponto, par de números) e class para objetos grandes com lógica. Isso é uma prática recomendada?