成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Objective-C 與 C++區(qū)別之分

移動(dòng)開發(fā) iOS
本文主要講述了Objective-C 與 C++的區(qū)別,通過(guò)兩者的區(qū)分學(xué)習(xí),我們學(xué)習(xí)起來(lái)更方便些,先來(lái)看詳細(xì)內(nèi)容。

Objective-CC++區(qū)別是本文要結(jié)束的內(nèi)容,主要是通過(guò)兩者的區(qū)分學(xué)習(xí),我們學(xué)習(xí)起來(lái)更方便些。不多說(shuō),我們來(lái)看詳細(xì)內(nèi)容。

1、兩者***的相同便是: 都是從 C 演化而來(lái)的面向?qū)ο笳Z(yǔ)言, 兩者都兼容標(biāo)準(zhǔn) C 語(yǔ)言.

2、兩者***的不同便是: Objective C 提供了運(yùn)行期動(dòng)態(tài)綁定機(jī)制, 而C++ 是編譯時(shí)靜態(tài)綁定, 并通過(guò)嵌入類(多重繼承)和虛函數(shù)(虛表)來(lái)模擬實(shí)現(xiàn). Objective C 在語(yǔ)言層次上支持動(dòng)態(tài)消息轉(zhuǎn)發(fā), 其函數(shù)調(diào)用語(yǔ)法為 [object function], 而且C++ 為 object->function(). 兩者的語(yǔ)義也有不同,

在 Objective C 里是說(shuō)發(fā)送消息到一個(gè)對(duì)象上, 至于這個(gè)對(duì)象能不能處理消息(也就是說(shuō)實(shí)現(xiàn)了這個(gè)函數(shù)與否)以及是處理還是轉(zhuǎn)發(fā)消息都不會(huì) crash, 而在 C++ 里是說(shuō)對(duì)象進(jìn)行了某個(gè)操作,如果對(duì)象沒(méi)有這個(gè)操作的話,要么編譯會(huì)報(bào)錯(cuò)(靜態(tài)綁定),要么程序會(huì) crash 掉的(動(dòng)態(tài)綁定).

3、Objective C 不支持多重繼承, 而 C++ 支持. 不過(guò) Objective C 通過(guò) proxy(代理) 和 Category(類別) 可以更優(yōu)雅地實(shí)現(xiàn)這一特性. 這一點(diǎn)也包括了 overwriting(覆蓋) 和 overloading(重載) 兩者的不同.

4、函數(shù)名字解析也不同, Objective C 的函數(shù)名字解析是函數(shù)名稱 + 參數(shù)名稱的, 而 C++ 只包括函數(shù)名稱.  因此在 Objective C 中以下是合法的,因?yàn)閮烧呓馕龀鰜?lái)分別類似于 foo:bar1 和 foo:bar2, 是不同的;

-(int)foo:(int) bar1;  //原作者“Objective C 的函數(shù)名字解析是函數(shù)名稱 + 參數(shù)名稱”這里的參數(shù)名其實(shí)是指 “參數(shù)描述”,只有在兩個(gè)以及兩個(gè)以上的參數(shù)時(shí)才能有這么個(gè)意思。作者是直接將形參值的名字作為參數(shù)描述了,而且要說(shuō)明這一點(diǎn)概念舉例也不正確。

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

(更正,原文對(duì)此的解釋有錯(cuò)誤,Objective-c 中沒(méi)有重載,O-C只認(rèn)函數(shù)名(包括參數(shù)描述))

要想實(shí)現(xiàn)類似重載的功能,只有先用NSNumber或者NSValue將參數(shù)裝起來(lái)再作為參數(shù),很笨的,不智能。

而在 C++ 中以下是非法的, 編譯將出錯(cuò), 因?yàn)閮烧呓馕龀鰜?lái)都是類似于 foo:int, 編譯器無(wú)法辨別.

  1. int foo(int bar1);  
  2. char* foo(int bar2); 

5、Objective-C 沒(méi)有 C++ 里有的構(gòu)造函數(shù)和析構(gòu)函數(shù), 其對(duì)應(yīng)物為 alloc-init/free .

6、Objective-C 2.0 了加入了垃圾回收機(jī)制(在 iPhone 和 iPad 上不可用), 而 C++ 沒(méi)有.

7、Objective-C 不允許在 Stack 上分配內(nèi)存, 只能在 heap 上進(jìn)行, 而 C++ 兩者都允許.

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

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

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

可以這么說(shuō) Objective-C 在 C 之上進(jìn)行了一層簡(jiǎn)單的包裝, 而 C++ 在 C++ 之上進(jìn)行了復(fù)雜的包裝, 但 Objective-C 讓人感覺(jué)更優(yōu)雅簡(jiǎn)潔

小結(jié):詳解Objective-C C++區(qū)別的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-16 13:43:40

Objective-C文件cocoa

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構(gòu)造函數(shù)

2015-10-08 10:01:10

Objective-CLayout

2011-07-18 16:36:51

Objective-C XCode

2014-04-01 10:50:42

iOS開發(fā)runtimeObjective-C

2011-08-17 10:29:39

Objective-C預(yù)處理

2015-06-25 11:21:33

C++Objective-C

2011-07-29 15:47:21

iPhone開發(fā) Objective- C

2011-07-27 16:55:12

Objective-c 閉包

2011-08-01 17:11:43

Objective-C 函數(shù)

2011-08-15 14:32:42

Objective-C委托協(xié)議

2014-04-28 09:56:56

Objective-CiOS命名空間

2011-08-17 11:05:22

Objective-C方法

2011-07-08 18:44:09

Objective-C Self Super

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-08-10 18:07:29

Objective-C反射

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 15:58:34

Objective-C
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: av日韩一区 | 精品视频成人 | 伊人网国产 | 一级黄色毛片a | 久久久久久久国产 | 日韩福利片| 欧美在线视频一区二区 | 日韩手机在线视频 | 成人在线视频免费观看 | 欧美日韩视频网站 | 激情a| 成人欧美日韩一区二区三区 | 国产做a爱片久久毛片 | 中文字幕一区二区三区精彩视频 | 国产黄色小视频在线观看 | 国产我和子的乱视频网站 | 亚洲精品自拍 | 国产亚洲一区二区精品 | 日本成人在线观看网站 | 国产精品欧美大片 | 精品日韩一区 | 日本精品一区二区三区视频 | 麻豆成人在线视频 | 免费一级欧美在线观看视频 | 韩国av一区二区 | 在线免费看黄 | 国产高清免费在线 | 日韩精品一区二区三区在线观看 | 国产免费一级一级 | 黄色片av| 人妖一区| 成人不卡 | 欧美激情视频一区二区三区在线播放 | 视频1区 | 在线播放中文字幕 | 中文字幕欧美在线观看 | 日韩欧美在线一区 | 国产丝袜一区二区三区免费视频 | 免费久久99精品国产婷婷六月 | www精品 | julia中文字幕久久一区二区 |