C++ - What is __declspec(novtable)?

__declspec(novtable) is a Microsoft specific keyword.

It instructs the compiler to not generate vtable pointer initialization code for the class or struct. The compiler can safely omit the vtable (virtual function table) for the type, and with potentially hundreds of interfaces in a C++ project, this can result in a significant reduction in code size.

An example using __declspec(novtable):

  // IConsoleWriter is an abstract base class. It will never be instantiated directly. The vtable for this type can be discarded.
  struct __declspec(novtable) IConsoleWriter
      virtual void WriteLine(char* message) = 0;
  class ConsoleWriter : public IConsoleWriter
      virtual void WriteLine(char* message) override
          printf("%s\r\n", message);

Ads by Google

Ask a question, send a comment, or report a problem - click here to contact me.

© Richard McGrath