다음을 통해 공유


novtable

Microsoft 전용

이 __declspec 확장 된 속성입니다.

이 폼의 __declspec 는 클래스 선언에 적용할 수 있지만 순수 인터페이스 클래스를, 클래스 자체를 인스턴스화할 합니다에 적용 해야 합니다.__declspec Vfptr constructor(s) 및 소멸자는 클래스의 초기화 코드를 생성 하는 컴파일러가 중지 합니다.대부분의 경우이 클래스와 연결 된 유일한 참조 vtable 제거 하 고 따라서 링커가 제거 됩니다.이 폼을 사용 하 여 __declspec 의 코드 크기가 상당히 감소 될 수 있습니다.

로 표시 된 클래스를 인스턴스화하려고 시도 하면 novtable 및 다음 클래스 멤버에 액세스 하 고 액세스 위반 (AV) 나타날 수 있습니다.

예제

// novtable.cpp
#include <stdio.h>

struct __declspec(novtable) X {
   virtual void mf();
};

struct Y : public X {
   void mf() {
      printf_s("In Y\n");
   }
};

int main() {
   // X *pX = new X();
   // pX->mf();   // Causes a runtime access violation.

   Y *pY = new Y();
   pY->mf();
}
  

참고 항목

참조

__declspec

C + + 키워드