展开全部
不用指针调用函数的话,会覆盖,类似虚函数一样.
如果是有意的覆盖,最好把基类的函数定义为虚函数.
当用指针调用时候就不会覆盖.
因为定义一个基类指针,当通过这个指针调用所指向子类对象函数时候,就会调用基类的函数,而不是子类的
你可以编个简单的程序测试下就知道了,定义个基类B和 子类C,在c里重写b的函数fun();
然后main里定义个指针调用测试下
int main()
{
B ob1;
C ob2;
B *p;
p=&ob2;
p->fun();
return 0;
}
如果是有意的覆盖,最好把基类的函数定义为虚函数.
当用指针调用时候就不会覆盖.
因为定义一个基类指针,当通过这个指针调用所指向子类对象函数时候,就会调用基类的函数,而不是子类的
你可以编个简单的程序测试下就知道了,定义个基类B和 子类C,在c里重写b的函数fun();
然后main里定义个指针调用测试下
int main()
{
B ob1;
C ob2;
B *p;
p=&ob2;
p->fun();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询