상속 키워드
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 특정 끝