Partilhar via


Derivando uma classe de CObject

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