虚函数必须是基类的非静态成员函数,这是什么意思

就是在成员函数前面虚函数关键词就行了啊,跟非静态有什么关系... 就是在成员函数前面虚函数关键词就行了啊,跟非静态有什么关系 展开
 我来答
仁昌爱娱乐
高粉答主

2019-10-14 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459852

向TA提问 私信TA
展开全部

虚函数必须是基类的非静态成员函数意思是虚函数必定有返回值,头部需要有函数返回值类型,同时没有函数体。非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。

扩展资料:

优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。

将函数声明为虚函数时,只需要在声明函数的类体中使用关键字“virtual”,而定义函数时不需要使用关键字“virtual”。

塑介机v
2013-08-01 · TA获得超过2421个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:504万
展开全部
http://zhidao.baidu.com/question/158499366.html

另外,是在编译通过,实际运行后再通过晚绑定确定对象的类型,然后判断对应的行为方法的。
派生类通过对基类的virtual函数进行重写,从而实现派生类特定的函数和方法的。而重写是一种晚绑定,也就是动态绑定。可以参考。

如果是静态成员函数,无法进行晚绑定,那么也就自然无法实现多态功能。http://blog.csdn.net/a_31415926/article/details/9674211
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
超级大不懂
2013-08-01 · TA获得超过181个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:113万
展开全部
这些理论的东西在实际编程的时候不一定遇得到。我的理解就是,静态成员函数是预先就放进内存中的,也就是说,他的函数体已经实现了。而虚函数是未实现的函数,这两个明显矛盾了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c281b4c
2013-08-01 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1046万
展开全部
就是不能加关键字static
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
the_jebel
2013-08-01 · TA获得超过124个赞
知道答主
回答量:62
采纳率:0%
帮助的人:66.3万
展开全部
从逻辑角度来说,静态成员函数是绑定class的,一旦定义对应的class就不会改变;而虚函数的意义恰恰是运行时动态选择调用哪个class的同名函数。本质上是矛盾的,不可同时使用。
是实现角度来说,静态成员函数的本质与C函数一致,对应一个内存中的固定地址;而虚函数对应的是虚表中的一个索引值,在运行时通过这个索引值进行间接寻址。两者不可兼容。
所以无论是从逻辑上的合理性,还是实现上的可行性上来说,虚函数都必须是一个非静态成员函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式