Construção em 2 fases
From Forum Nokia Wiki
Por celulares serem dispositivos com recursos limitados, a gerência de memória é um ponto primordial para o bom desempenho de uma aplicação. O Symbian OS possui mecanismos para tratar exceções de forma que quando houver uma o prograva deva voltar para um estado anterior estável.
Como construtores não podem retornar um valor, caso a alocação de recursos ou chamada a alguma função que possa ocasionar uma exceção fosse feita no construtor o sistema operacional não poderia manusear essa exceção o que poderia ocasionar sérios problemas.
Pensando nisso o Symbian OS adotou a construção de classes em duas fases, a default do C++ e a função ConstructL() também conhecido como construtor da segunda-fase. Alocação de memória, chamada a funções que possam gerar uma exceção etc são feitas no ConstructL (com o 'L' no fim da função) assim o sistema poderá controlar uma exceção caso ocorra.
ConstructL
ConstructL é uma função void deve-se implementar esse construtor como private ou protected para impossibilitar a criação de uma instância utilizando new. Inicializações que não abandonam podem ser realizadas normalmente no construtor c++, porém as inicializações que podem abandonar devem ser feitas no ConstructL.
CProjetoExemplo::CProjetoExemplo() { iData = 180507; } void CProjetoExemplo::ConstructL() { iClasse = new (ELeave) CClasse; }
Artigos relacionados
Abandonos - Leaves
Gerência de memória
Pilha de limpeza - Cleanup Stack
Leitura complementar
SymbianOS Basics WorkBook 3.0 - Páginas 117 à 149
