A idéia de uma estrutura é agrupar uma coleção de variáveis em um único contêiner. Por exemplo, se você tiver três coordenadas
int x;
int y;
int z;
convém vê-los como uma unidade de dados e agrupá-los:
struct point
{
int x;
int y;
int z;
};
Você pode ver isso como uma maneira de modularizar seus dados. Agora você pode definir variáveis contendo todos os três valores em uma unidade:
struct point p1, p2;
Na programação processual, você possui procedimentos ou funções que manipulam dados e, em particular, estruturas, por exemplo
void shiftX(struct point *p, int offset);
Você pode chamar a função em uma estrutura passando-a como argumento:
shiftX(&p1, -10);
O passo de estruturas para classes é dizer que procedimentos / funções devem ser agrupados com dados em unidades: como estruturas classificam entidades que possuem a mesma estrutura, classes classificam entidades que possuem a mesma estrutura e operações.
Então agora você pode escrever:
class Point
{
public:
void shiftX(int offset);
int x;
int y;
int z;
};
e depois:
Point p;
...
p.shiftX(-10);
Dessa maneira, é mais fácil agrupar operações que funcionam no mesmo tipo de dados. Por exemplo, você pode agrupar todas as operações que atuam em pontos na definição de classe, em vez de espalhá-las pelo seu código como funções que possuem um ou mais parâmetros do tipo point.
Além disso, você pode refinar a estrutura e o comportamento usando herança.
Resumindo: estruturas são um conceito que permite organizar / modularizar dados. As classes permitem organizar / modularizar dados e operações.
struct
palavra - chave opcional quando a estrutura é usada.