C,C++如何和OC混用

c和obj-c如何混用

1)obj-c的編譯器處理後綴爲m的文件時,可以識別obj-c和c的代碼,處理mm文件可以識別obj-c,c,c++代碼,但cpp文件必須只能用c/c++代碼,而且cpp文件include的頭文件中,也不能出現obj-c的代碼,因爲cpp只是cpp
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是問題
3)在cpp中混用obj-c其實就是使用obj-c編寫的模塊是我們想要的。
如果模塊以類實現,那麼要按照cpp class的標準寫類的定義,頭文件中不能出現obj-c的東西,包括#import cocoa的。實現文件中,即類的實現代碼中可以使用obj-c的東西,可以import,只是後綴是mm。
如果模塊以函數實現,那麼頭文件要按c的格式聲明函數,實現文件中,c++函數內部可以用obj-c,但後綴還是mm或m。

總結:只要cpp文件和cpp include的文件中不包含obj-c的東西就可以用了,cpp混用obj-c的關鍵是使用接口,而不能直接使用實現代碼,實際上cpp混用的是obj-c編譯後的o文件,這個東西其實是無差別的,所以可以用。obj-c的編譯器支持cpp.

Objective-C和C++都是C的面向對象的超集。
Object與C++的區別主要點:Objective-C是完全動態的,支持在運行時動態類型決議(dynamic typing),動態綁定(dynamic binding)以及動態裝載(dynamic loading);而C++是部分動態的,編譯時靜態綁定,通過嵌入類(多重繼承)和虛函數(虛表)來模擬實現。
Objective-C 在語言層次上支持動態消息轉發,其消息發送語法爲 [object function]; 而且C++ 爲 object->function()。 兩者的語義也不同,在 Objective-C 裏是說發送消息到一個對象上,至於這個對象能不能響應消息以及是響應還是轉發消息都不會 crash; 而在 C++ 裏是說對象進行了某個操作,如果對象沒有這個操作的話,要麼編譯會報錯(靜態綁定),要麼程序會 crash 掉的(動態綁定)。

OC和C++的區別

Objective-C和C++都是C的面向對象的超集。
Object與C++的區別主要點:Objective-C是完全動態的,支持在運行時動態類型決議(dynamic typing),動態綁定(dynamic binding)以及動態裝載(dynamic loading);而C++是部分動態的,編譯時靜態綁定,通過嵌入類(多重繼承)和虛函數(虛表)來模擬實現。
Objective-C 在語言層次上支持動態消息轉發,其消息發送語法爲 [object function]; 而且C++ 爲 object->function()。 兩者的語義也不同,在 Objective-C 裏是說發送消息到一個對象上,至於這個對象能不能響應消息以及是響應還是轉發消息都不會 crash; 而在 C++ 裏是說對象進行了某個操作,如果對象沒有這個操作的話,要麼編譯會報錯(靜態綁定),要麼程序會 crash 掉的(動態綁定)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章