Compartir a través de


novtable

Específicos de Microsoft

Éste es un atributo extendido de __declspec .

Este formulario de __declspec se puede aplicar a cualquier declaración de clase, pero solo se deben aplicar a los tipos de interfaces puras, es decir, las clases que nunca se crearán instancias por sí solas.__declspec detiene el compilador de generar código para inicializar el vfptr en los constructores y el destructor de clase.En muchos casos, esto quita las únicas referencias al vtable que son asociado a la clase y, así, el vinculador la quitará.Mediante este formulario de __declspec puede producir una reducción significativa de tamaño de código.

Si intenta crear una instancia de una clase marcada con novtable y después tener acceso a un miembro de clase, recibirá una infracción de (AV) acceso.

Ejemplo

// 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();
}
  

Vea también

Referencia

__declspec

Palabras clave de C++