¿Hay un equivalente de g ++ al argumento __declspec(novtable)
de Visual Studio?¿Hay un equivalente de g ++ a __declspec (novtable) de Visual Studio?
Básicamente, en una clase base virtual pura, el argumento __declspec(novtable)
se puede utilizar para suprimir la creación de un vtable para la clase base, así como el código de inicialización/desinicialización vtable en el contstructor/destructor, respectivamente. Por ejemplo,
class __declspec(novtable) PureVirtualBaseClass
{
public:
PureVirtualBaseClass(){}
virtual ~PureVirtualBaseClass() = 0;
};
Consulte Paul DiLascia's article para obtener más información. También vea mi relacionado question.
Simplemente curioso: me parece que descartar el vtable para PureVirtualBaseClass es una microoptimización, y generalmente muy pequeña. ¿Cuál es el motivo para querer hacer esto? – Managu
Lea el artículo de DiLascia, él explica las razones por las cuales quiere hacer esto mejor que yo. – paxos1977
También encontró este http://msdn.microsoft.com/en-us/library/k13k85ky.aspx hoy en MSDN donde sugieren que puede haber una reducción significativa en el tamaño del programa usando __declspec (novtable). – paxos1977