下部virtual程序为什么不对呀?

下面virtual程序为什么不对呀?????????????????
class base{
public:
virtual void test()
{
printf("!!!!!!base\n");
}
};

class sub{
public:
void test()
{
base::test();
printf("!!!!!sub\n");
}
};

int _tmain(int argc, _TCHAR* argv[])
{
sub a;
a.test();
return 0;
}

------解决方案--------------------

//继承是这样的吧
class sub:public base
{
};

看看 c++ primer吧!