Re: C++繼承的問題
請問不管幾層都可以嗎 只要是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
推
02/11 19:13, , 1F
02/11 19:13, 1F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章