상속 키워드

Microsoft 전용

class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;

다음은 각 문자에 대한 설명입니다.

  • 클래스 이름
    선언 되는 클래스의 이름입니다.

C + + 클래스의 정의 하기 전에 클래스 멤버에 대 한 포인터를 선언할 수 있습니다.예를 들면 다음과 같습니다.

class S;
int S::*p;

위의 코드에서 p 정수 S. 클래스 멤버에 대 한 포인터 선언그러나, class S ;이 코드에 정의 되지 않았습니다. 만 선언 되었습니다.이러한 포인터는 컴파일러가 발견 되 면 포인터의 일반화 된 표현을 확인 해야 합니다.표현의 크기 지정 상속 모델에 따라 달라 집니다.네 가지 방법으로 상속 모델을 사용 하 여 컴파일러를 지정 합니다.

  • Ide에서 멤버 포인터 표현

  • 에 명령줄을 사용 하 여 /vmg 전환

  • 사용 하 여 pointers_to_members pragma

  • 상속 하는 키워드를 사용 하 여 __single_inheritance, __multiple_inheritance, 및 __virtual_inheritance.이 기술은 상속 모델-클래스 별로 제어합니다.

    [!참고]

    하면 항상 포인터를 클래스 멤버에 클래스를 정의한 후 선언 하는 경우 이러한 옵션을 사용할 필요가 없습니다.

에 대 한 포인터를 선언 하 여 클래스 정의 하기 전에 클래스 멤버에 크기와 속도 결과 실행 파일에 적용 됩니다.상속 클래스를 통해 보다 클래스 및 포인터를 해석 하는 데 필요한 클수록 코드 멤버에 대 한 포인터를 나타내는 데 필요한 바이트 수를 사용 하는 복잡 합니다.단일 상속 적어도 복잡 하며 가상 상속 가장 복잡 한 됩니다.

위 예제를 변경 하면:

class __single_inheritance S;
int S::*p;

명령줄 옵션 또는 pragma 및 포인터 멤버에 관계 없이 class S 는 가장 작은 가능한 표현을 사용 합니다.

[!참고]

정방향 선언과 동일한 선언을 클래스 멤버 포인터 표현에 해당 클래스의 멤버에 대 한 포인터를 선언 하 고 각 번역 단위에서 발생 한 멤버에 대 한 포인터를 선언 하기 전에 선언 해야 합니다.

Microsoft 특정 끝

참고 항목

참조

C + + 키워드