Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. 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
Użyj normalnej składni języka C++, aby odziedziczyć klasę po
CObject
(lub z klasy, która dziedziczy zCObject
).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 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.