Поделиться через


novtable

Только для систем Microsoft

Это a __declspec расширенный атрибут.

Эта форма __declspec может применяться к любому объявлению класса, но только применяться в чистый классам интерфейса, т е классы, которые никогда не будет создан.__declspec останавливает компилятор из генерации кода для инициализации vfptr в конструкторах и деструкторе класса.В большинстве случаев это удаляет только те ссылки на vtable, связанных с классом, и, таким образом, компоновщик удаляет ее.С помощью следующей формы __declspec может привести к значительной уменьшении размера кода.

При попытке создания экземпляра пометил с, класс novtable затем получите доступ к члену класса, обращается Нарушение прав доступа (антивирусную программы).

Пример

// 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++