Partager via


Dérivation d'une classe de CObject

Cet article explique les étapes minimales nécessaires pour dériver une classe de CObject.D'autres éléments de classe d' CObject décrivent les étapes nécessaires pour tirer parti des fonctionnalités spécifiques d' CObject , telles que la sérialisation et le débogage de diagnostic.

Dans les discussions d' CObject, les termes « interface du fichier » et « fichier d'implémentation » sont fréquemment utilisées.Le fichier d'interface (souvent appelé le fichier d'en-tête, ou. le fichier de H) contient la déclaration de classe et toutes les autres informations nécessaires pour utiliser la classe.Le fichier d'implémentation (ou le fichier .cpp) contient la définition de classe et le code qui implémente le membre de classe fonctionne.Par exemple, pour une classe nommée CPerson, vous créez en général un fichier d'interface nommé PERSON.H et un fichier d'implémentation nommé PERSON.CPP.Toutefois, pour les petites classes qui ne sont pas partagées entre les applications, il est parfois plus facile de combiner l'interface et l'implémentation dans un fichier .cpp unique.

Vous pouvez choisir de quatre niveaux de fonctionnalité en dérivant une classe d' CObject:

  • Fonctionnalités de base : Aucune prise en charge des informations sur la classe à l'exécution ou de sérialisation mais n'inclut la gestion de la mémoire de diagnostic.

  • Fonctionnalités de base plus prise en charge des informations sur la classe à l'exécution.

  • Fonctionnalités de base plus en charge la création des informations sur la classe à l'exécution et dynamique.

  • Fonctionnalités de base plus prise en charge des informations sur la classe d'exécution, de la création dynamique, et de la sérialisation.

Les classes conçues pour être réutilisées (celles qui servira plus loin de classes de base) doivent au moins inclure la prise en charge de classe d'exécution et la prise en charge de la sérialisation, si tout futur besoin de sérialisation est prévue.

Vous choisissez le niveau de fonctionnalités en utilisant des macros spécifiques de déclaration et d'implémentation dans la déclaration et l'implémentation des classes que vous dérivez d' CObject.

Le tableau suivant montre la relation entre les macros utilisées à la sérialisation et aux informations d'exécution de stockage.

Macros utilisées pour la sérialisation et les informations d'exécution

Macro utilisée

CObject::IsKindOf

CRuntimeClass : :

CreateObject

CArchive::operator>>

CArchive::operator<<

Fonctionnalités de base d' CObject

Non

Non

Non

DECLARE_DYNAMIC

Oui

Non

Non

DECLARE_DYNCREATE

Oui

Oui

Non

DECLARE_SERIAL

Oui

Oui

Oui

Pour utiliser les fonctionnalités de base de CObject

  • Utilisez la syntaxe C++ normale pour dériver votre classe d' CObject (ou d'une classe dérivée d' CObject).

    l'exemple suivant montre le cas le plus simple, la dérivation d'une classe d' CObject:

    class CSimple : public CObject
    {
       // add CSimple-specific members and functions...
    };
    

Normalement, toutefois, vous pouvez substituer certaines des fonctions membres de CObject pour gérer les détails de votre nouvelle classe.Par exemple, vous pouvez généralement parfois nécessaire de substituer la fonction d' Dump d' CObject pour fournir la sortie de débogage pour le contenu de votre classe.Pour savoir comment substituer Dump, consultez l'article diagnostic : Pour faire un dump du contenu d'objet.Vous pouvez souhaiter également substituer la fonction d' AssertValid d' CObject pour fournir le test personnalisé pour valider la cohérence des données membres d'objets de classe.Pour une description de remplacement AssertValid, consultez MFC ASSERT_VALID et CObject::AssertValid.

L'article spécifier des niveaux de fonctionnalité décrit comment spécifier d'autres niveaux de fonctionnalité, y compris des informations sur la classe à l'exécution, la création d'objet dynamique, et la sérialisation.

Voir aussi

Concepts

À l'aide de CObject