Re: C++繼承的問題

看板Programming作者 (陳揚和)時間18年前 (2008/02/11 14:08), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/5 (看更多)
請問不管幾層都可以嗎 只要是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
把code簡化後直接貼吧,一定是自己寫錯
02/11 19:13, 1F
文章代碼(AID): #17h-PHw8 (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 5 篇):
文章代碼(AID): #17h-PHw8 (Programming)