OC是C語言基礎上增加了Smalltalk語言中的消息功能。OC是真正的C的超集(C++並不是),OC的C語言部分是走C語言規範的。而且某種意義上OC比C++更面向對象,但是性能很低。並且OC2.0又增加了lambda、自動引用計數、自動boxing/unboxing等語法功能。
C++並不像壹般人認為那樣是C的超集。C++和C完全是兩套規範。而且C++除了面向對象編程,還有比較完善的基於模板的元編程功能。當然C++也提供了lambda之類,相對細節的語法(不過實現和OC並不壹樣)。
至於當初為什麽NeXTSTEP選用OC作為開發語言,可以說單純就是選了。OC顯然比C好用,而那時候C++和OC比也沒有很明顯的優勢(相對簡單的OC成熟自然也比C++快壹些,C++從1983年正式出現,直到1998年才標準化,而到2011年才基本完善)。
另外這裏不得不說事實上還有Objective-C++,也就是把OC在C中添加的功能添加到C++上,另外增加了壹些適合C++的功能(比如OC中C結構體裏不能用OC對象,但是OC++中可以)。OC++中可以混用OC和C++的類,並且可以在使用OC接口的同時,利用C++的強大功能。