Partager via


Dérivation d'une classe de CObject

Cet article décrit les étapes minimales nécessaires pour dériver une classe de CObject. D’autres CObject articles de classe décrivent les étapes nécessaires pour tirer parti de fonctionnalités spécifiques CObject , telles que la prise en charge du débogage de sérialisation et de diagnostic.

Dans les discussions de CObject, les termes « fichier d’interface » et « fichier d’implémentation » sont fréquemment utilisés. Fichier d’interface (souvent appelé fichier d’en-tête, ou . Le fichier H) contient la déclaration de classe et toute autre information nécessaire pour utiliser la classe. Fichier d’implémentation (ou . Le fichier CPP) contient la définition de classe ainsi que le code qui implémente les fonctions membres de classe. Par exemple, pour une classe nommée CPerson, vous créez généralement un fichier d’interface nommé PERSON. H et un fichier d’implémentation nommé PERSON. RPC. Toutefois, pour certaines petites classes qui ne seront pas partagées entre les applications, il est parfois plus facile de combiner l’interface et l’implémentation en un seul . Fichier CPP.

Vous pouvez choisir parmi quatre niveaux de fonctionnalités lors de la dérivation d’une classe à partir de CObject:

  • Fonctionnalités de base : aucune prise en charge des informations de classe d’exécution ou de la sérialisation, mais inclut la gestion de la mémoire de diagnostic.

  • Fonctionnalités de base plus prise en charge des informations de classe d’exécution.

  • Fonctionnalités de base et prise en charge des informations de classe d’exécution et création dynamique.

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

Les classes conçues pour la réutilisation (celles qui serviront ultérieurement de classes de base) doivent au moins inclure la prise en charge des classes d’exécution et la prise en charge de la sérialisation, si un besoin de sérialisation futur est prévu.

Vous choisissez le niveau de fonctionnalité à l’aide de macros de déclaration et d’implémentation spécifiques dans la déclaration et l’implémentation des classes que vous dérivez CObject.

Le tableau suivant montre la relation entre les macros utilisées pour prendre en charge la sérialisation et les informations d’exécution.

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 CObject No Pas de Non
DECLARE_DYNAMIC Oui No Non
DECLARE_DYNCREATE Oui Oui No
DECLARE_SERIAL Oui Oui Oui

Pour utiliser les fonctionnalités CObject de base

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

    L’exemple suivant montre le cas le plus simple, la dérivation d’une classe à partir de CObject:

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

Normalement, toutefois, vous souhaiterez peut-être remplacer certaines fonctions CObjectmembres pour gérer les spécificités de votre nouvelle classe. Par exemple, vous pouvez généralement remplacer la fonction de fournir une Dump sortie de CObject débogage pour le contenu de votre classe. Pour plus d’informations sur la façon de remplacerDump, consultez l’article Personnalisation du vidage d’objet. Vous pouvez également remplacer la AssertValid fonction de CObject fournir des tests personnalisés pour valider la cohérence des membres de données des objets de classe. Pour obtenir une description de la façon de remplacer AssertValid, consultez MFC ASSERT_VALID et CObject ::AssertValid.

L’article Spécifiant des niveaux de fonctionnalité explique comment spécifier d’autres niveaux de fonctionnalités, notamment les informations de classe d’exécution, la création d’objets dynamiques et la sérialisation.

Voir aussi

Utilisation de CObject