C++虚函数和C#虚函数的区别
c#不了解。但是关于c++的说法,这样是不对的。题主你其实纠结的不是语言,而是an implementation of c++.意思是,之所以会有上面的结果,是因为你的编译器的实现。在c++标准里面,对于virtual 的具体实现没有做任何要求。而virtual method table只是大多数编译器的实现。因为标准没有做要求,具体的细节上,每个编译器是可以不同的。而Virtual在标准里面,设计者不是希望使用者去思考怎么implement 它的,而是希望使用者对它的理解是这样:不考虑pure virtual .base中声明了一个Virtual 函数,非pure virtual,所以这个函数必须要有定义。从base class的reference或者pointer,你只能访问到base的成员!!但是,如果这个reference或者pointer,真实的类型是一个子类的。子类中,只要出现了相同函数(不包括返回值)的定义,那么它override了自己的base的virtual function!!所以,设计者,希望你认为的是,call的还是base class里面的成员!只是,这个成员被override了。而不是希望你去考虑,这个背后的实现。
推荐阅读
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 在路上|在路上开廉价车和豪车的区别,看看网友的真实体会
- 啥是微信开发WEB前端
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 软件产品与传统商品、软件行业与传统行业的区别是啥
- |有种粗心叫“错把喉癌当成咽喉炎”,医生通俗告诉你两者区别在哪
- Python3.4和3.5区别大么
- 计科,通信工程,电子信息工程这三个专业有啥区别
- C语言指数函数代码
- 单例模式static函数必须在头文件中实现么
