CObject에서 클래스 파생시키기

이 문서에서는 CObject에서 클래스를 파생하는 데 필요한 최소 단계를 설명합니다. 다른 CObject 클래스 문서에서는 serialization 및 진단 디버깅 지원과 같은 특정 CObject 기능을 활용하는 데 필요한 단계를 설명합니다.

논의 CObject에서 "인터페이스 파일" 및 "구현 파일"이라는 용어가 자주 사용됩니다. 인터페이스 파일(헤더 파일이라고도 함) 또는 . H 파일)에는 클래스 선언 및 클래스를 사용하는 데 필요한 기타 정보가 포함됩니다. 구현 파일(또는 . CPP 파일)에는 클래스 정의와 클래스 멤버 함수를 구현하는 코드가 포함되어 있습니다. 예를 들어 이름이 지정된 CPerson클래스의 경우 일반적으로 PERSON이라는 인터페이스 파일을 만듭니다. H 및 PERSON이라는 구현 파일입니다. Cpp. 그러나 애플리케이션 간에 공유되지 않는 일부 작은 클래스의 경우 인터페이스와 구현을 단일 클래스로 결합하는 것이 더 쉬운 경우도 있습니다. CPP 파일.

다음에서 클래스를 파생할 때 네 가지 기능 수준 중에서 CObject선택할 수 있습니다.

  • 기본 기능: 런타임 클래스 정보 또는 serialization에 대한 지원은 없지만 진단 메모리 관리를 포함합니다.

  • 기본 기능과 런타임 클래스 정보에 대한 지원.

  • 기본 기능과 런타임 클래스 정보 및 동적 생성에 대한 지원.

  • 기본 기능과 런타임 클래스 정보, 동적 생성 및 serialization에 대한 지원.

나중에 기본 클래스로 사용할 수 있도록 설계된 클래스는 향후 serialization 요구 사항이 예상되는 경우 런타임 클래스 지원 및 serialization 지원을 최소한 포함해야 합니다.

파생 CObject클래스의 선언 및 구현에서 특정 선언 및 구현 매크로를 사용하여 기능 수준을 선택합니다.

다음 표에서는 serialization 및 런타임 정보를 지원하는 데 사용되는 매크로 간의 관계를 보여 줍니다.

Serialization 및 런타임 정보에 사용되는 매크로

사용된 매크로 CObject::IsKindOf CRuntimeClass::

CreateObject
CArchive::operator>>

CArchive::operator<<
기본 CObject 기능 아니요 없음 없음
DECLARE_DYNAMIC 없음 없음
DECLARE_DYNCREATE 없음
DECLARE_SERIAL

기본 CObject 기능을 사용하려면

  1. 일반 C++ 구문을 사용하여 (또는 파생된 CObject클래스에서) 클래스 CObject 를 파생합니다.

    다음 예제에서는 가장 간단한 대/소문자에서 클래스 CObject의 파생을 보여줍니다.

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

그러나 일반적으로 일부 멤버 함수를 재정의 CObject하여 새 클래스의 세부 사항을 처리할 수 있습니다. 예를 들어 일반적으로 클래스의 CObject 내용에 대한 디버깅 출력을 제공하는 함수를 재정 Dump 의할 수 있습니다. 재정 Dump의하는 방법에 대한 자세한 내용은 개체 덤프 사용자 지정 문서를 참조하세요. 클래스 개체의 CObject 데이터 멤버 일관성에 대한 유효성을 검사하기 위해 사용자 지정된 테스트를 제공하는 기능을 재정 AssertValid 의할 수도 있습니다. 재정AssertValid의하는 방법에 대한 설명은 MFC ASSERT_VALID 및 CObject::AssertValid를 참조하세요.

기능 수준 지정 문서에서는 런타임 클래스 정보, 동적 개체 만들기 및 serialization을 포함하여 다른 수준의 기능을 지정하는 방법을 설명합니다.

참고 항목

CObject 사용