我想问一下当我使用没有指针的虚函数时会发生什么?例如:为什么这种方法不像我期待的那样虚拟?
#include <iostream>
using namespace std;
class Parent
{
public:
Parent(int i) { }
virtual void f() { cout<<"Parent"<<endl; }
};
class Child : public Parent
{
public:
Child(int i) : Parent(i) { }
virtual void f() { Parent::f(); cout<<" Child"<<endl; }
};
int main()
{
Parent a(2);
Parent b = Child(2);
a.f();
b.f();
return 0;
}
^^它为什么不起作用? 我在哪里可以找到关于虚拟方法真正起作用的内容?
另一个问题(可能是众多问题之一)解决相同的问题,你可以阅读进一步的洞察力:http://stackoverflow.com/questions/2931423/problem-overridding-virtual-function/2931438 – 2010-08-30 11:03:43
@泰勒 - 这个问题基本上是一个完全相同的副本。投票结束。 – Omnifarious 2010-08-30 11:09:04
代码是一样的;基本假设不是。这里,假定问题出现在虚函数的调用中。链接的问题假定未能进入虚拟功能的_overriding。 (当然,两者的真正原因在于切片)。所以我倾向于说它不完全相同。 – MSalters 2010-08-30 12:00:55