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

詳解Objective-C 與 C++區別之分

移動開發 iOS
本文主要講述了Objective-C 與 C++的區別,通過兩者的區分學習,我們學習起來更方便些,先來看詳細內容。

Objective-CC++區別是本文要結束的內容,主要是通過兩者的區分學習,我們學習起來更方便些。不多說,我們來看詳細內容。

1、兩者***的相同便是: 都是從 C 演化而來的面向對象語言, 兩者都兼容標準 C 語言.

2、兩者***的不同便是: Objective C 提供了運行期動態綁定機制, 而C++ 是編譯時靜態綁定, 并通過嵌入類(多重繼承)和虛函數(虛表)來模擬實現. Objective C 在語言層次上支持動態消息轉發, 其函數調用語法為 [object function], 而且C++ 為 object->function(). 兩者的語義也有不同,

在 Objective C 里是說發送消息到一個對象上, 至于這個對象能不能處理消息(也就是說實現了這個函數與否)以及是處理還是轉發消息都不會 crash, 而在 C++ 里是說對象進行了某個操作,如果對象沒有這個操作的話,要么編譯會報錯(靜態綁定),要么程序會 crash 掉的(動態綁定).

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

4、函數名字解析也不同, Objective C 的函數名字解析是函數名稱 + 參數名稱的, 而 C++ 只包括函數名稱.  因此在 Objective C 中以下是合法的,因為兩者解析出來分別類似于 foo:bar1 和 foo:bar2, 是不同的;

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

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

(更正,原文對此的解釋有錯誤,Objective-c 中沒有重載,O-C只認函數名(包括參數描述))

要想實現類似重載的功能,只有先用NSNumber或者NSValue將參數裝起來再作為參數,很笨的,不智能。

而在 C++ 中以下是非法的, 編譯將出錯, 因為兩者解析出來都是類似于 foo:int, 編譯器無法辨別.

  1. int foo(int bar1);  
  2. 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 讓人感覺更優雅簡潔

小結:詳解Objective-C C++區別的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

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構造函數

2015-10-08 10:01:10

Objective-CLayout

2011-07-18 16:36:51

Objective-C XCode

2014-04-01 10:50:42

iOS開發runtimeObjective-C

2011-08-17 10:29:39

Objective-C預處理

2015-06-25 11:21:33

C++Objective-C

2011-07-29 15:47:21

iPhone開發 Objective- C

2011-07-27 16:55:12

Objective-c 閉包

2011-08-01 17:11:43

Objective-C 函數

2011-08-15 14:32:42

Objective-C委托協議

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實現截圖

2013-03-27 12:54:00

iOS開發Objective-C

2011-05-11 15:58:34

Objective-C
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人久久 | 一级片免费视频 | 天天干免费视频 | 中文字幕视频在线观看 | 国产高清毛片 | 久久国产精品亚洲 | 成人国产午夜在线观看 | 亚洲成人免费视频在线 | 久草免费在线视频 | 亚洲精品在线观看网站 | 99精品国产一区二区青青牛奶 | 综合久久av | 日本成人免费网站 | 国产综合视频 | 国产在线一区二区 | 久久99精品久久久久久噜噜 | 一区二区中文 | 久热9 | 国产成人高清视频 | av网站免费观看 | 一区二区免费在线 | 国产特黄一级 | 欧美精品片| 91久久国产精品 | 91精品国产乱码久久久久久 | 嫩草视频在线免费观看 | 午夜精品久久 | 中文字幕 国产精品 | 成人免费视频网站在线看 | 在线观看 亚洲 | 精产嫩模国品一二三区 | 91在线精品一区二区 | 欧美日韩专区 | 超碰伊人久久 | 日韩精品一区二区三区四区 | 999www视频免费观看 | 天天爽一爽| 久草成人 | 日本超碰 | 亚洲欧美综合精品久久成人 | 国产精品久久久乱弄 |