文章目录
总结:
非virtual函数被调用由 指针ptr 决定
virtual函数被调用由 虚函数表 决定
演示示例如下
class Person {
public:
void Print()
{
cout << "Person" << endl;
}
virtual void VirtualPrint()
{
cout << "VirtualPrint Person" << endl;
}
};
class Studen : public Person {
public:
void Print()
{
cout << "Student" << endl;
}
virtual void VirtualPrint()
{
cout << "VirtualPrint Student" << endl;
}
};
int main()
{
Person *p = new Studen();
Studen *s = new Studen();
p->Print(); // Person // 非virtual函数由 ptr 决定
s->Print(); // Student
p->VirtualPrint(); // VirtualPrint Student // virtual函数由 虚函数表 决定
s->VirtualPrint(); // VirtualPrint Student
return 0;
}