Objective-C 和 C++ 的区别有哪些?为什么苹果会选择前者
1个回答
展开全部
除了都能用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++的强大功能。
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++的强大功能。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询