Talvez você fique surpreso se eu disser que até agora não falamos em objetos, apesar de estarmos falando de POO o tempo todo.
É que muitas pessoas confundem o conceito de classe com o conceito de objeto, mas nós acabar com essa confusão agora mesmo!
A classe define uma categoria de elementos. É uma generalização. Quando falamos em objeto, porém, estamos falando em um item específico daquela classe.
Quando é que um objeto aparece em nosso código? A resposta é: quando instanciamos uma classe, ou seja, criamos um objeto pertencente a ela.
Num programa C++ que usasse a nossa classe Sentável acima, criaríamos objetos assim:
Sentavel cadeira = new Sentavel( 1, 4 );
Sentavel banco_de_praca = new( 3, 4 );
Na primeira declaração estamos definindo uma cadeira como sendo um objeto da classe Sentável, com um assento e quatro pernas. Claro que isso é limitado, pois cadeiras tem outras propriedades, como encosto, por exemplo. Mas por hora o exemplo serve para ilustrar o conceito de instância.
Na segunda declaração estamos criando um banco de praça, que tem assento para três pessoas e quatro pernas. Da mesma forma poderíamos escrever:
Sentavel tamborete = new Sentavel( 1, 3 );
Para quem não está acostumado com o termo, tamborete é um banquinho bem baixo de apenas três pernas.
A palavra chave para criar um objeto, uma instância de uma classe, é new. Com esse "comando" o construtor é invocado e a memória necessária para o objeto é alocada.É com o new que os objetos passam a existir!
É importante notar que o construtor não é chamado explicitamente. Mas como ele é chamado implicitamente pelo new, ele sempre deve ser declarado como public.
Como sentar foi declarada como public, podemos escrever:
tamborete->sentar();
para colocar uma pessoa no tamborete.
Mas se escrevermos:
tamborete->get_sentantes();
Teremos uma mensagem de erro do compilador, pois get_sentantes foi declarada como private e portanto só pode ser usada dentro do escopo da classe.