Construção de objetos em um e dois estágios
Você pode escolher entre duas técnicas para criar objetos gráficos, como canetas e pincéis:
Construção de uma fase: construa e inicialize o objeto em uma fase, tudo com o construtor.
Construção em duas fases: construa e inicialize o objeto em duas fases separadas. O construtor cria o objeto e uma função de inicialização o inicializa.
A construção em duas fases é sempre mais segura. Na construção de uma fase, o construtor poderá gerar uma exceção se você fornecer argumentos incorretos ou a alocação de memória falhar. Esse problema é evitado pela construção em duas fases, embora você precise verificar se há falha. Em ambos os casos, destruir o objeto é o mesmo processo.
Observação
Essas técnicas se aplicam à criação de objetos, não apenas objetos gráficos.
Exemplo de ambas as técnicas de construção
O seguinte exemplo breve mostra os dois métodos de construção de um objeto de caneta:
// One-stage
CPen myPen1(PS_DOT, 5, RGB(0, 0, 0));
// Two-stage: first construct the pen
CPen myPen2;
// Then initialize it
if (myPen2.CreatePen(PS_DOT, 5, RGB(0, 0, 0)))
{
// Use the pen
}