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 CObject
czę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 CPerson
zwykle 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 CObject
klasy .
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
Użyj normalnej składni języka C++, aby uzyskać klasę (
CObject
lub z klasy pochodzącej zCObject
klasy ).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 CObject
funkcji 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 AssertValid
MFC 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.