我发现__declspec(novtable)并没有减小对象的大小.
MSDN上面说__declspec(novtable)使得编译器不会为这个类产生虚表,也就不会给类对象的头部放一个虚表指针.
我做了一个小实验:
class __declspec(novtable)Base
{
int i;
public:
virtual void f();
virtual void g();
};
class __declspec(novtable)Child:public Base
{
public:
void f(){}
};
class C:public Child
{
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("%d,%d,%d\n",sizeof(Base),sizeof(Child),sizeof(C));
return 0;
}