Objective-C 和C++的比较

form http://topic.csdn.net/u/20091212/14/eed674bc-b074-4269-8450-f9ca659103c0.html

 

1.  最大的相同:都是从c演化过来的面向对象语言。

2.  最大的不同:c++是静态语言,而OC是动态类型识别语言?OC提供了运行期动态绑定机制。

     OC里,把消息发到一个对象上,如果对象不能处理此消息,也无所谓。

     而c++中,则会crash.

 

3.  继承:OC不支持多重继承。

4. 4, 函数名字解析也不同, Objective C 的函数名字解析是函数名称 + 参数名称的, 而 C++ 只包括函数名称.  因此在 Objective C 中以下是合法的,因为两者解析出来分别类似于 foo:bar1 和 foo:bar2, 是不同的; 

 

-(int)foo:(int) bar1;

-(char*)foo:(int) bar2;

 

而在 C++ 中以下是非法的, 编译将出错, 因为两者解析出来都是类似于 foo:int, 编译器无法辨别.

 

int foo(int bar1);

char* foo(int bar2);

 

5, Objective-C 没有 C++ 里有的构造函数和析构函数, 其对应物为 alloc-init/free .

 

6, Objective-C 2.0 了加入了垃圾回收机制(在 iPhone 和 iPad 上不可用), 而 C++ 没有.

 

7, Objective-C 不允许在 Stack 上分配内存, 只能在 heap 上进行, 而 C++ 两者都允许.

 

8, Objective-C 不支持引用, 而 C++ 支持.

 

9, Objective-C 不支持模板, 而 C++ 支持.

 

10, Objective-C 是 Smalltalk 系的, 而 C++ 是 Simula 系的. 

 

可以这么说 Objective-C 在 C 之上进行了一层简单的包装, 而 C++ 在 C++ 之上进行了复杂的包装, 但 Objective-C 让人感觉更优雅简洁.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值