大家好。我目前正在学习virtual
函数,我有一个问题。我有 2 节课:
class Parent
{
public:
void say()
{
cout << "I am Parent" << endl;
}
};
class Child : public Parent
{
void say()
{
cout << "I am Child" << endl;
}
};
现在我会这样做:
int main()
{
Parent* pParent = new Child ();
pParent->say();
}
我得到以下输出:
I am Parent
那么问题来了:为什么要调用父类的函数,根据所有逻辑,什么时候应该调用继承类的函数。编译器没有真正看到->
我们正在调用继承类的方法,其对象位于指针旁边。是的,我知道有办法解决这个问题virtual
。但是这一切是为了什么?
gimp 有什么用?为了效率,例如:) - 以免在虚拟函数表中工作时翻找。
virtual
?所以绑定是静态的,基于对象的编译时类型 -Parent
。virtual
?这意味着绑定是动态的,我们得到一个指针,查看指向虚函数表的指针,寻找正确的,调用...