c++中的虚函数有什么作用?

 我来答
zzu_liuwei
2012-01-16 · TA获得超过372个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:224万
展开全部
类的三个重要特征:封装、继承、多态性。
其中多态性就是通过函数重载(运算符重载实质上也是函数重载)和虚函数来实现的。
虚函数的作用:在基类用virtual声明成员函数为虚函数,在派生类中重新定义该函数,就可以通过基类指针或引用来访问基类和派生类中的同名函数。
虚函数实现多态性:同一类族中不同类的对象,对同一函数调用做出不同的响应。
多态性其实就是一个接口,多种方法,分为静态多态性和动态多态性,函数重载属于静态多态性,在程序编译时就可确定调用哪个函数,其过程称为静态关联或早期关联,静态多态性又称编译时多态性;虚函数属于动态多态性,在程序运行过程中才动态地确定所调用的是那个对象的函数,其过程称为动态关联或滞后关联,动态多态性又称运行时多态性。
slatop
2012-01-16 · TA获得超过1390个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:426万
展开全部
virtual 关键词可以将一个类的函数说明为虚函数
虚函数的主要用处是对派生类实现动态联编.举例说明一下:
class a
{
virtual int func(){return 1;}
}
class b:public a
{
int func(){return 2;}
}
void main()
{
a *p;
p=new b;
p->func();//得到的结果是2.
}
由上面简单的例子可知,一个基类的指针可以指向他的子类,使用该指针调用函数时,如果调用的函数在基类中被说明为虚函数,那么子类中该函数也自动成为虚函数,调用时会根据指针所指向的对象调用相应类的虚函数.实现动态联编.
更详细的说明你可以看一下虚函数表
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天蝎神经侠侣
高粉答主

2015-09-09 · 关注我不会让你失望
知道大有可为答主
回答量:7533
采纳率:67%
帮助的人:700万
展开全部
指针的类型是可以强行转来转去的。普通情况你转什么类型就调对应类型的同名函数。但是虚函数实现多态后,尽管可能你把指针转成父类的类型,但是因为创建的时候是子类的类型,它还是会调用子类的这个虚函数。
这样可以统一代码且正确运用子类的新特性。
也因为如此,如果父类虚函数不做实现而=0成为纯虚函数,那么父类就不可以实例化,这个没有实现的虚函数也永远不会调用。因为根据多态的动态联编,总是会调用实例化了的子类的该方法。指针强行转成父类也不会调用纯虚函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式