今天遇到一个BUG。居然没有注意虚函数中调用虚函数的问题
class base
{
public:
base(){};
virtual void printa()
{
printf("base A\n");
}
virtual void printb()
{
printf("base B\n");
printa();
}
};
class son :public base
{
public:
son(){};
virtual void printa()
{
printf("son A\n");
}
};
int _tmain(int argc, _TCHAR* argv[])
{
son s;
s.printb();
getchar();
return 0;
}
baseB
sonA
之前没有注意,认为printb中调用的printa就是base的printa。实际上这个printa也是通过指针动态调用的。
并不是不知道。只是没有注意这个细节。导致调试了好久。