2011-01-12 17 views

回答

3

或多或少,這是真的;任何在C++或Objective-C下編譯的東西都可以用Objective-C++編譯器編譯。

但是,有一些邊緣,這不是真實的和少數的行爲差異。儘管如此,我並不知道任何特定的運行時間行爲差異。這些差異通常應該在編譯期間顯示出來,而且大多是由C++的「增強」類型概念引起的問題。

但是,操作符重載可能會非常成問題。如果代碼主體廣泛使用操作符重載,那麼當第一次混合Objective-C時會導致問題。但是,再次,通常作爲編譯器警告並且很少作爲運行時錯誤。

+0

這就是我所期待的答案! – 2011-01-13 18:34:43

+0

(雖然看到我的答案) – 2011-01-15 16:36:43

2

Objective-C只是C的一個超集。您可以將C++與Objective-C混合使用,即Objective-C++ - 但是您必須遵循某些規則。
在這裏你可以看到所有必須遵循的規則:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html

編輯:這是從開發者網站報價:「蘋果公司的Objective-C編譯器,可以隨意地在混合C++和Objective-C代碼相同的源文件,這個Objective-C/C++語言混合體稱爲Objective-C++。有了它,您可以利用Objective-C應用程序中現有的C++庫。「因此很清楚地表明,C++和Objective-C的混合體被稱爲Objective-C++,但這不是C++的超集,但它是兩種語言,可以與一些規則一起使用。 (例如,你不能在繼承期間混合使用objective-c和C++類,但也有其他類。)

0

我想至少有一個無效的Objective-C代碼的例子Objective-C++:

void SayHello() 
{ 
    char* this = "hello!"; 
    printf("%s", this); 
} 

(什麼人會做命名變量「這個」,我不知道)