Objective-C 和 C++ 的区别有哪些?为什么苹果会选择前者

 我来答
BlueWanderer
推荐于2016-11-26 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2010万
展开全部
除了都能用C语言以外就没什么太特别的共同点了。另外并不是苹果选了OC,而是NeXT选了OC(Mac OSX的前身是NeXT公司的NeXTSTEP系统)。

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++的强大功能。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式