5个回答
展开全部
http://zhidao.baidu.com/question/158499366.html
另外,是在编译通过,实际运行后再通过晚绑定确定对象的类型,然后判断对应的行为方法的。
派生类通过对基类的virtual函数进行重写,从而实现派生类特定的函数和方法的。而重写是一种晚绑定,也就是动态绑定。可以参考。
如果是静态成员函数,无法进行晚绑定,那么也就自然无法实现多态功能。http://blog.csdn.net/a_31415926/article/details/9674211
另外,是在编译通过,实际运行后再通过晚绑定确定对象的类型,然后判断对应的行为方法的。
派生类通过对基类的virtual函数进行重写,从而实现派生类特定的函数和方法的。而重写是一种晚绑定,也就是动态绑定。可以参考。
如果是静态成员函数,无法进行晚绑定,那么也就自然无法实现多态功能。http://blog.csdn.net/a_31415926/article/details/9674211
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些理论的东西在实际编程的时候不一定遇得到。我的理解就是,静态成员函数是预先就放进内存中的,也就是说,他的函数体已经实现了。而虚函数是未实现的函数,这两个明显矛盾了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是不能加关键字static
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从逻辑角度来说,静态成员函数是绑定class的,一旦定义对应的class就不会改变;而虚函数的意义恰恰是运行时动态选择调用哪个class的同名函数。本质上是矛盾的,不可同时使用。
是实现角度来说,静态成员函数的本质与C函数一致,对应一个内存中的固定地址;而虚函数对应的是虚表中的一个索引值,在运行时通过这个索引值进行间接寻址。两者不可兼容。
所以无论是从逻辑上的合理性,还是实现上的可行性上来说,虚函数都必须是一个非静态成员函数。
是实现角度来说,静态成员函数的本质与C函数一致,对应一个内存中的固定地址;而虚函数对应的是虚表中的一个索引值,在运行时通过这个索引值进行间接寻址。两者不可兼容。
所以无论是从逻辑上的合理性,还是实现上的可行性上来说,虚函数都必须是一个非静态成员函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询