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. Dla niektórych małych klas, które nie będą współdzielone przez aplikacje, bywa łatwiej połączyć interfejs i implementację w jeden plik .CPP.

Możesz wybrać spośród czterech poziomów funkcjonalności podczas wyprowadzania klasy z 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.

  • Podstawowa funkcjonalność oraz obsługa informacji o klasach w czasie wykonania i dynamicznego tworzenia.

  • 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ć, używając określonych makr deklaracji i implementacji w odniesieniu do deklaracji i implementacji klas, które są pochodnymi klasy CObject.

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 Run-Time

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 funkcjonalności CObject

  1. Użyj normalnej składni języka C++, aby odziedziczyć klasę po CObject (lub z klasy, która dziedziczy z CObject).

    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żesz chcieć zastąpić niektóre funkcje składowe CObject, aby obsłużyć specyfikę nowej klasy. Na przykład zazwyczaj chcesz zastąpić Dump funkcję CObject w celu zapewnienia wyjścia debugowania dla zawartości swojej klasy. Aby uzyskać szczegółowe informacje na temat zastępowania Dump, zobacz artykuł Dostosowywanie zrzutu obiektu. 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 także

Korzystanie z obiektu CObject