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