在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 两者最大的相同便是: 都是从 C 演化而来的面向对象语言, 两者都兼容标准 C 语言. 2 两者最大的不同便是: Objective C 是完全动态的,而 C++是部分动态的。 3 Objective C 不支持多重继承, 而 C++ 支持。 不过 Objective C 通过 proxy(代理) 或 Category(类别) 可以更优雅地实现这一特性。这一点也包括了 overwriting(覆盖) 和 overloading(重载) 两者的不同。Objective C 不支持函数重载。 4 函数名字解析也不同,Objective C 的函数名字解析是函数名称 + 参数名称的, 而 C++ 只包括函数名称。 因此在 Objective C 中以下是合法的,因为两者解析出来分别类似于 foo:bar1: 和 foo:bar2: 是不同的: -(int)foo:(int) bar bar1:(int)bar; -(char*)foo:(int) bar bar2:(int)bar; 而在 C++ 中以下是非法的, 编译将出错, 因为两者解析出来都是类似于 foo:int, 编译器无法辨别: int foo(int bar, int bar1); char* foo(int bar, int bar2);
5 Objective-C 没有 C++ 里有的构造函数和析构函数, 其对应物为 alloc-init/dealloc;
6 Objective-C 2.0 了加入了垃圾回收机制(在 iPhone 和 iPad 上不可用), 而 C++ 没有;
7 Objective-C 不允许在 Stack 上分配内存,只能在 heap 上进行,而 C++ 两者都允许;
8 Objective-C 不支持模板,而 C++ 支持;Objective-C 不支持命名空间,而 C++ 支持;Objective-C 也不支持函数缺省默认参数,而 C++ 支持;
9 Objective-C 是 Smalltalk 系的, 而 C++ 是 Simula 系的。
可以这么说 Objective-C 在 C 之上进行了一层简洁的包装, 而 C++ 在 C++ 之上进行了复杂的包装, 但 Objective-C 让人感觉更优雅简洁。
Refence: http://pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf http://www.mactech.com/articles/mactech/Vol.13/13.03/CandObjectiveCCompared/ |
请发表评论