一个比较奇怪的类继承关系 和函数调用过程。
A是爷爷类。
B是儿子类。
C是孙子类。
×××××××××××××××××××××
A里面定义一个虚函数 XX()
B里面没有定义XX() 但是调用XX()
C里面定义了 XX()。
×××××××××××××××××××××××××××
B调用XX()的过程是不是这样样子?
第一步:在自己类里面没有找到XX()的定义,就到父亲里面找。
第二步:到了父亲A类里面发现这样一个虚函数。就到子类里面也就是B类里面找到 发现没有。
第三步:既然B类里没有就继续到孙子类里面也是C里面找,最后终于找到了XX()的定义。
×××××××××××××××××××××××××××××××××××
这是在一个真是项目项目里面的程序,我调试的时候如果在B类里面按住F12就会跳转到A的虚函数里面。
但是真是运行的时候就会跳转到C类的XX()里面。
×××××××××××××××××××××××××××××××
谢谢。
请各位发表见解。
B是儿子类。
C是孙子类。
×××××××××××××××××××××
A里面定义一个虚函数 XX()
B里面没有定义XX() 但是调用XX()
C里面定义了 XX()。
×××××××××××××××××××××××××××
B调用XX()的过程是不是这样样子?
第一步:在自己类里面没有找到XX()的定义,就到父亲里面找。
第二步:到了父亲A类里面发现这样一个虚函数。就到子类里面也就是B类里面找到 发现没有。
第三步:既然B类里没有就继续到孙子类里面也是C里面找,最后终于找到了XX()的定义。
×××××××××××××××××××××××××××××××××××
这是在一个真是项目项目里面的程序,我调试的时候如果在B类里面按住F12就会跳转到A的虚函数里面。
但是真是运行的时候就会跳转到C类的XX()里面。
×××××××××××××××××××××××××××××××
谢谢。
请各位发表见解。
...全文
相关推荐
C++ Templates(侯捷版1-10章).pdf
- **奇怪的递归模板模式(Curiously Recurring Template Pattern, CRTP)**:一种利用继承关系中的模板参数来传递信息的设计模式。
c++奇怪的魔塔
比如,我们可以定义一个基类`Character`,然后派生出`Player`和`Monster`类,每个类都有自己的属性(如生命值、攻击力)和方法(如移动、攻击)。
奇怪的小球
但在《奇怪的小球》中,小球的运动可能在一个单独的线程中进行,确保即使在复杂的计算过程中,小球也能持续不断地移动,保持游戏的连贯性。其次,碰撞检测是游戏中的关键部分,往往需要复杂计算。
奇怪按钮类
**代码封装**:良好的编程实践要求将所有这些自定义逻辑封装在一个独立的类中,以保持代码的模块化和可维护性。在“奇怪按钮类”的源代码中,开发者可能已经实现了以上提到的一些或全部功能。
奇怪的大冒险源码
《奇怪的大冒险》是一款颇受欢迎的趣味横版过关游戏,以其独特的关卡设计和出人意料的陷阱闻名。这份源码提供了该游戏的部分代码、图片资源以及游戏逻辑,对于初级和中级程序员来说,是一个很好的学习和研究素材。


