Partilhar via


Derivando uma classe de CObject

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

  1. Use a sintaxe normal de C++ para derivar a sua classe de CObject (ou de uma classe derivada de CObject).

    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.

Ver também

Usando CObject