作者sorryChen (陈扬和)
看板Programming
标题Re: C++继承的问题
时间Mon Feb 11 14:08:15 2008
请问不管几层都可以吗 只要是public 继承就可以override到?
而且就compiler设计来说还需要满小心的...
因为compiler必须要记得我是从A call的 当他运行到C的行驶中要call加速的时候
他必须去CAll 在 A新定义的加速而不是在C定义的..如果有很多层的话
就代表族谱中所有的符号都要被记得 且要非常明确到底是从哪层call起的
要是在有个recursive的话就更复杂了..
而且会不会不小心第一个新function和祖父辈的同名 就会不小心被call到..
例外 要是有些地方不想被override..有些想 也是很复杂
※ 引述《adrianshum (Alien)》之铭言:
: ※ 引述《sorryChen (陈扬和)》之铭言:
: : 比如说有三个class ex: A: 卡车 B:车 C:交通工具
: : A继承B继承C..
: : C中有一个function叫行驶..有另一个function加速
: : 行驶会call加速
: : 现在我在A override 加速这个function....
: : (没有override行驶这个函数)..
: : 当我在A call行驶时..理论上应该要会间接call到新override的加速阿
: : 可是好像是call 到C中最原始的加速...
: : 我有加virtual啦..但好像没用..请问要如何用没有overrided的老函数中
: : call到新override的函数,还是一定要把行驶也overrided..
: : 我是用visual C++啦
: 应该不会吧? 之前写过蛮多东西都是这样做的
: 不过通常这种情况出问题, 都是你的卡车的加速 method 打错了
: 所以根本没有 override, 只是多了一个 method
: alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 128.125.87.33
1F:推 avhacker:把code简化後直接贴吧,一定是自己写错 140.123.19.235 02/11 19:13