C++中虚函数的问题

[复制链接]
查看11 | 回复2 | 2011-8-29 22:33:51 | 显示全部楼层 |阅读模式
class A{
public: void print()
{ coutprint();
p2->print();
}
为什么这段代码输出的都是This is A?我知道定义成虚函数就可以解决,但为什么会出现这种情况呢?什么原理?

回复

使用道具 举报

千问 | 2011-8-29 22:33:51 | 显示全部楼层
对于非虚函数而言,不管基类指针指向的是公有派生类对象或者是基类对象,不管派生类是否重写了改同名函数,通过基类指针访问该函数只能访问基类的该函数虚函数则正好相反...
回复

使用道具 举报

千问 | 2011-8-29 22:33:51 | 显示全部楼层
一旦一个函数被声明为虚函数,那么他从该点之后的继承层次结构中都是虚函数,不管它在有没有再次声明是不是虚函数,有些程序员为了提高程序的清晰度,在继承结构中喜欢再次明确的声明这些虚函数.
至于“判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。”只是解释了什么是覆盖,派生类将基类中的虚函数重写即为覆盖。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行