摘要: Objective C 與 C++ 兩者最大的相同便是: 都是從 C 演化而來(lái)的面向?qū)ο笳Z(yǔ)言, 兩者都兼容標(biāo)準(zhǔn) C 語(yǔ)言; 兩者最大的不同便是: Objective C 提供了運(yùn)行期動(dòng)態(tài)綁定機(jī)制, 而 C++ 是編譯時(shí)靜態(tài)綁定, 并通過(guò)嵌入類(多重繼承)和虛函數(shù)(虛表)來(lái)模擬實(shí)現(xiàn). Objective C 在語(yǔ)言層次上支持動(dòng)態(tài)消息轉(zhuǎn)發(fā), 其函數(shù)調(diào)用語(yǔ)法為 [object function], 而且C++ 為 object->function(). 兩者的語(yǔ)義也有不同, 在 Objective C 里是說(shuō)發(fā)送消息到一個(gè)對(duì)象上, 至于這個(gè)對(duì)象能不能處理消息(也就是說(shuō)實(shí)現(xiàn)了這個(gè)函數(shù)與否)以及是處理還是轉(zhuǎn)發(fā)消息都不會(huì) crash, 而在 C++ 里是說(shuō)對(duì)象進(jìn)行了某個(gè)操作,如果對(duì)象沒(méi)有這個(gè)操作的話,要么編譯會(huì)報(bào)錯(cuò)(靜態(tài)綁定),要么程序會(huì) crash 掉的(動(dòng)態(tài)綁定).
閱讀全文