Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Este artigo descreve as etapas mínimas necessárias para derivar uma classe de CObject. Outros CObject artigos de classe descrevem as etapas necessárias para aproveitar recursos específicos, como serialização e suporte a depuração e diagnóstico.
Nas discussões de CObject, os termos "ficheiro de interface" e "ficheiro de implementação" são usados com frequência. O arquivo de interface (geralmente chamado de arquivo de cabeçalho ou . H file) contém a declaração de classe e quaisquer outras informações necessárias para usar a classe. O arquivo de implementação (ou . CPP) contém a definição de classe, bem como o código que implementa as funções de membro da classe. Por exemplo, para uma classe chamada CPerson, você normalmente criaria um arquivo de interface chamado PERSON. H e um arquivo de implementação chamado PERSON. CPP. No entanto, para algumas classes pequenas que não serão compartilhadas entre aplicativos, às vezes é mais fácil combinar a interface e a implementação em um único . Arquivo CPP.
Você pode escolher entre quatro níveis de funcionalidade ao derivar uma classe de CObject:
Funcionalidade básica: Não há suporte para informações de classe de tempo de execução ou serialização, mas inclui gestão de memória para diagnóstico.
Funcionalidade básica e suporte para informações sobre classes em tempo de execução.
Funcionalidade básica, juntamente com suporte para informação de classe em runtime e criação dinâmica.
Funcionalidade básica, bem como suporte para informações de classe em tempo de execução, criação dinâmica e serialização.
As classes projetadas para reutilização (aquelas que servirão posteriormente como classes base) devem pelo menos incluir suporte a classes em tempo de execução e suporte à serialização, se qualquer necessidade futura de serialização for prevista.
Você escolhe o nível de funcionalidade usando macros específicas de declaração e implementação na declaração e implementação das classes derivadas do CObject.
A tabela a seguir mostra a relação entre as macros usadas para dar suporte à serialização e informações de tempo de execução.
Macros usadas para serialização e informações de Run-Time
| A macro usada | CObject::IsKindOf | CRuntimeClass:: CreateObject |
CArchive::operador>> CArchive::operador<< |
|---|---|---|---|
Funcionalidade básica CObject |
Não | Não | Não |
DECLARE_DYNAMIC |
Sim | Não | Não |
DECLARE_DYNCREATE |
Sim | Sim | Não |
DECLARE_SERIAL |
Sim | Sim | Sim |
Para usar a funcionalidade básica de CObject
Use a sintaxe normal de C++ para derivar a sua classe de
CObject(ou de uma classe derivada deCObject).O exemplo a seguir mostra o caso mais simples, a derivação de uma classe de
CObject:class CSimple : public CObject { // add CSimple-specific members and functions... };
Normalmente, no entanto, você pode querer substituir algumas das funções de membro do CObjectpara lidar com as especificidades da sua nova classe. Por exemplo, pode ser que geralmente queira substituir a função Dump de CObject para fornecer saída de depuração para o conteúdo da sua classe. Para obter detalhes sobre como substituir Dump, consulte o artigo Personalização de despejo de objeto. Você também pode querer substituir a função AssertValid de CObject para fornecer testes personalizados para validar a consistência dos membros de dados de objetos de classe. Para obter uma descrição de como substituir AssertValid, consulte MFC ASSERT_VALID e CObject::AssertValid.
O artigo Especificando níveis de funcionalidade descreve como especificar outros níveis de funcionalidade, incluindo informações de classe em tempo de execução, criação de objetos dinâmicos e serialização.