您的位置:首页 > 其它

虚函数中调用虚函数要注意的地方

2017-03-12 17:51 162 查看
今天遇到一个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也是通过指针动态调用的。

并不是不知道。只是没有注意这个细节。导致调试了好久。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: