×
Namespaces

Variants
Actions

Construção em 2 fases

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Criado por cabezonxdg em Cabezonxdg
Última alteração feita por hamishwillee em 09 Dec 2011

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


This page was last modified on 9 December 2011, at 07:55.
98 page views in the last 30 days.