c的所有運算符都可以重載處理嗎 C語言如何支持C 重載?
C語言如何支持C 重載?這個問題描述其實有些問題,因為C重載有兩種場景:函數(shù)重載運算符重載問題本身也沒指明倒底是哪種場景?,F(xiàn)在就兩個場景分別給出答案。怎么用C語言實現(xiàn)方法C函數(shù)重載?根據(jù)筆者的經(jīng)驗,
C語言如何支持C 重載?
這個問題描述其實有些問題,因為C重載有兩種場景:
函數(shù)重載運算符重載問題本身也沒指明倒底是哪種場景?,F(xiàn)在就兩個場景分別給出答案。
怎么用C語言實現(xiàn)方法C函數(shù)重載?根據(jù)筆者的經(jīng)驗,共三3種方法可以不實現(xiàn)程序:
用C語言基于一個C編譯器的對應(yīng)子集,后者自然可以允許重載;用函數(shù)指針再oid指針類型參數(shù)強制破軍類型轉(zhuǎn)換,也可以實現(xiàn)程序函數(shù)重載;用宏而且可變參數(shù),可以不利用函數(shù)重載
怎么用C語言實現(xiàn)方法C運算符重載?運算符在C語言中是記錄字,根本無法實際大多數(shù)變通方法實現(xiàn)方法重載。只有用C語言實現(xiàn)方法一個C編譯器的對應(yīng)子集,后者恐怕可以允許重載。
用函數(shù)指針?biāo)闵蟰oid指針類型參數(shù)強制隱式轉(zhuǎn)換,實現(xiàn)方法函數(shù)重載用一個例子來只能證明:
typedefvoid(*funcOverride)(void*param)
voidrunFuncOverride(funcOverridef,void*param){
f(param)
}
voidfunc_with_int_param(void*iParam){
inti*(int*)iParam
(int_paramfunctionarecalled,paramisn't%d
C語言目前支持什么函數(shù)重載,也可以不仿真的C的重載!
衍生關(guān)系的方法重載,最簡單那就是函數(shù)指針。
成員重新初始化讓函數(shù)指針正指向完全不同實現(xiàn)方法函數(shù)表就行。
實際上,很多不喜歡C的作者,發(fā)布的開源代碼庫大都基于條件函數(shù)指針實現(xiàn)方法多態(tài)特點的。
C 運算符重載的設(shè)計意義大嗎?
有太大的生產(chǎn)效率意義。在設(shè)計上又不是可以的,如果沒有,是從代碼也是可以實現(xiàn),如兩個類相除,是從代碼也可以把要乘積的成員(常見肯定不會限制公開的性)加下來。如果類設(shè)計有重載函數(shù)加法,就會效率高比較多,就建議使用,且不是需要太了解類細(xì)節(jié),但雖然要了解類相乘的含義說明