虛函數(shù)(動態(tài)綁定)對于 OO/C++的重要性
虛函數(shù)(動態(tài)綁定)對于 OO/C++來說是主要的嗎?是的!
沒有虛函數(shù),C++ 就不是面向?qū)ο蟮牧恕K惴剌d和非虛成員函數(shù)很好,但畢竟,它們只是更典型的C概念中傳遞一個struct的指針給函數(shù)的句法裝飾而已。雖然標準庫包含了許多模板以實現(xiàn)同樣非常好的“泛型編程(譯注:也稱通用編程,"generic programming")”技術(shù),但虛函數(shù)仍然是用C++進行面向?qū)ο缶幊痰暮诵摹?/font>
從商業(yè)角度看,如果沒有虛函數(shù),那么也就沒有什么理由要從傳統(tǒng)的 C 轉(zhuǎn)移到C++了。(在本FAQ中我們將忽略泛型編程和標準庫)。技術(shù)人員通常認為在C和非面向?qū)ο蟮腃++之間有很大的區(qū)別,但如果沒有面向?qū)ο螅@個區(qū)別通常不足以證明培訓開發(fā)者,新工具等的成本是值得的。換句話說,如果我被某個經(jīng)理征詢意見,是否從C轉(zhuǎn)向非面向?qū)ο蟮腃++(也就是說,轉(zhuǎn)換語言而不轉(zhuǎn)換典范),那么我可能會勸阻他這樣做,除非有逼不得已的面向工具的原因。從商業(yè)角度看,面向?qū)ο竽苁瓜到y(tǒng)具有可擴展性和可適應性,但只有C++類的語法而沒有面向?qū)ο蟮脑挘筒粫p少維護成本,而實際上會增加培訓成本。
底線:沒有虛函數(shù)的C++不是面向?qū)ο蟆S妙惥幊潭鴽]有動態(tài)綁定則稱為“基于對象”,而不是“面向?qū)ο蟆薄L叱鎏摵瘮?shù)和踢出OO(譯注:即面向?qū)ο螅┦且换厥隆KO碌木褪腔趯ο缶幊塘耍妥畛醯腁da語言類似(順便說一下,新的Ada語言支持OO而不是基于對象編程了)。
posted on 2006-06-22 14:48 楊粼波 閱讀(408) 評論(0) 編輯 收藏 引用 所屬分類: 文章收藏