__declspec(novtable) 的作用是:类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间。缺点是该类型对象不能调用虚函数了,一般用于接口。
如下代码:
class Base1 {
public:
	virtual void f() {};
	virtual void g() {};
};
class __declspec(novtable) Base2 {
public:
	virtual void f() {};
	virtual void g() {};
};
class Derived : public Base1, public Base2 {
public:
	virtual void g() {};
	virtual void h() {};
};
int main() {
	Base1 b1;
	Base2 b2;
	Derived d1;
	return 0;
}
 
可以看到,1. Base2没有虚表。 2. Derived有两张虚表
原文:https://www.cnblogs.com/redips-l/p/12180392.html