Udostępnij za pośrednictwem


Wyprowadzanie klasy z obiektu CObject

W tym artykule opisano minimalne kroki niezbędne do utworzenia klasy z obiektu CObject. Inne CObject artykuły klasy opisują kroki wymagane do korzystania z określonych CObject funkcji, takich jak serializacja i obsługa debugowania diagnostycznego.

W dyskusjach na ten temat CObjectczęsto używane są terminy "plik interfejsu" i "plik implementacji". Plik interfejsu (często nazywany plikiem nagłówka lub . Plik H) zawiera deklarację klasy i wszelkie inne informacje potrzebne do użycia klasy. Plik implementacji (lub . Plik CPP zawiera definicję klasy oraz kod, który implementuje funkcje składowe klasy. Na przykład w przypadku klasy o nazwie CPersonzwykle należy utworzyć plik interfejsu o nazwie PERSON. H i plik implementacji o nazwie PERSON. CPP. Jednak w przypadku niektórych małych klas, które nie będą współużytkowane przez aplikacje, czasami łatwiej jest połączyć interfejs i implementację w jeden element . Plik CPP.

Możesz wybrać spośród czterech poziomów funkcjonalności podczas wyprowadzania klasy z klasy :CObject

  • Podstawowe funkcje: brak obsługi informacji o klasie czasu wykonywania ani serializacji, ale obejmuje zarządzanie pamięcią diagnostyczną.

  • Podstawowe funkcje oraz obsługa informacji o klasie czasu wykonywania.

  • Podstawowe funkcje oraz obsługa informacji o klasie uruchomieniowej i tworzenia dynamicznego.

  • Podstawowe funkcje oraz obsługa informacji o klasie czasu wykonywania, tworzenia dynamicznego i serializacji.

Klasy przeznaczone do ponownego użycia (te, które będą później pełnić rolę klas bazowych), powinny obejmować co najmniej obsługę klas czasu wykonywania i obsługę serializacji, jeśli przewiduje się przyszłe zapotrzebowanie na serializacji.

Poziom funkcjonalności można wybrać przy użyciu określonych makr deklaracji i implementacji w deklaracji i implementacji klas, które pochodzą z CObjectklasy .

W poniższej tabeli przedstawiono relację między makrami używanymi do obsługi serializacji i informacji w czasie wykonywania.

Makra używane do serializacji i informacji o czasie wykonywania

Użyto makra CObject::IsKindOf Cruntimeclass::

CreateObject
CArchive::, operator>>

CArchive::, operator<<
Podstawowe CObject funkcje Nie. Nie. Nie.
DECLARE_DYNAMIC Tak Nie. Nie.
DECLARE_DYNCREATE Tak Tak Nie
DECLARE_SERIAL Tak Tak Tak

Aby użyć podstawowej funkcji obiektu CObject

  1. Użyj normalnej składni języka C++, aby uzyskać klasę ( CObject lub z klasy pochodzącej z CObjectklasy ).

    W poniższym przykładzie pokazano najprostszy przypadek, wyprowadzenie klasy z klasy :CObject

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

Zwykle jednak może być konieczne zastąpienie niektórych CObjectfunkcji składowych w celu obsługi specyfiki nowej klasy. Na przykład zazwyczaj może być konieczne zastąpienie Dump funkcji CObject w celu zapewnienia danych wyjściowych debugowania zawartości klasy. Aby uzyskać szczegółowe informacje na temat zastępowania Dump, zobacz artykuł Dostosowywanie zrzutu obiektów. Możesz również zastąpić AssertValid funkcję CObject , aby zapewnić dostosowane testowanie w celu zweryfikowania spójności składowych danych obiektów klasy. Opis sposobu zastępowania można znaleźć w temacie AssertValidMFC ASSERT_VALID i CObject::AssertValid.

W artykule Określanie poziomów funkcjonalności opisano sposób określania innych poziomów funkcjonalności, w tym informacji o klasie czasu wykonywania, tworzenia obiektów dynamicznych i serializacji.

Zobacz też

Używanie obiektu CObject