基类在定义并实现了自己的虚函数后,在全局内存区域中(可以这么理解),会有一个虚函数表,里面都是已实现的函数的指针。程序运行过程中实例化的所有基类对象,都有一个指向虚函数表的指针,而且这个指针的值是一样的,都指向那个全局内存。因为对于基类的每个实例他们使用的函数代码都是一样的嘛。
当你定义了一个派生类,并重新实现了部分虚函数后,由于你实现的虚函数和基类不同,所以必须有另一块全局内存保存派生类的虚函数指针列表。最简单的派生情况下,你的派生类就是在基类的内存块之后又加了些派生类使用的内存,此种最简单的情况下,你的派生类其实可以直接使用基类的那个指向虚函数列表的指针,只是指针的值是不同的而已。它指向不是基类的虚函数列表,而是派生类的虚函数列表。如果你没有定义新的虚函数,那么派生类的虚函数列表和基类布局一样,只是函数地址值不同,否则会在后面增加你新定义的函数的地址。
通过以上分析,我感觉如果你的派生类不对基类的虚函数做任何重新实现或补充,理论上可以使用同一个虚函数表,否则不行。
对于多继承和虚继承,派生类如果定义了新的虚函数,它甚至需要有自己的指向虚函数表的指针,个人感觉没有的话就不好实现了。
你都可以试试吗,试试就知道了,还可以揣测一下微软的实现。但是要分清虚函数表和指向虚函数表的指针,我感觉你是混淆了。你可以实例化一个基类再实例化一个派生类,看看虚函数指针是不是指向一个地址就行了。
在Excel VBA中不仅可以使用程序本身内置的函数(如工作表函数或VBA函数),还可根据需求自定义函数以实现数据处理的要求。
1. 在如图的成绩表中,每项成绩占总成绩的25%,据此要计算出每项(平时、小考、期中、期末)的百分比成绩。
2. 在Excel中可以直接引用单元格作参数写出如图的公式,然后计算出每位学生各项成绩的百分比。
3. 在VBA中,我们也可以自定义一个函数来实现以上的公式计算。
打开Visual Basic,添加一个模块和函数(Function,与过程Sub-End Sub原理是相同的),称之为“计算成绩”。
4. 设自定义函数的参数为x,令函数等于参数乘以0.25,相当于在Excel表中通过单元格引用来进行公式计算。
5. 回到Excel工作表中,在H2单元格中输入“=计算成绩(D2)”,回车即可得到相应的结果。
6. 我们同样也可以在VBA中通过使用循环与上面自定义的函数来计算出所有项目的结果。
以上案例仅用于演示,更多实际应用请根据需求进行相应的调整。
喜欢的朋友请多多关注,感谢支持!
函数编程?应该是自定义函数吧?下面为 *** 作步骤:
1.Alt+F11,右键左上角空白处,插入模块
2.键入自定义函数
3.关闭,返回Excel,就可以跟正常函数一样使用自定义函数了
4.自定义函数计算结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)