第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Object C和C++有什么區(qū)別

Object C和C++有什么區(qū)別

C++
一只甜甜圈 2018-11-26 00:00:44
Object C和C++有什么區(qū)別
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊

Objective-C?與 C++ 的區(qū)別:

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

2, 兩者最大的不同便是: Objective C 提供了運(yùn)行期動態(tài)綁定機(jī)制, 而 C++ 是編譯時靜態(tài)綁定, 并通過嵌入類(多重繼承)和虛函數(shù)(虛表)來模擬實(shí)現(xiàn). Objective C 在語言層次上支持動態(tài)消息轉(zhuǎn)發(fā), 其函數(shù)調(diào)用語法為 [object function], 而且C++ 為 object->function(). 兩者的語義也有不同, 在 Objective C 里是說發(fā)送消息到一個對象上, 至于這個對象能不能處理消息(也就是說實(shí)現(xiàn)了這個函數(shù)與否)以及是處理還是轉(zhuǎn)發(fā)消息都不會 crash, 而在 C++ 里是說對象進(jìn)行了某個操作,如果對象沒有這個操作的話,要么編譯會報錯(靜態(tài)綁定),要么程序會 crash 掉的(動態(tài)綁定).

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

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

-(int)foo:(int) bar bar1:(int)bar;
-(char*)foo:(int) bar bar2:(int)bar;
而在 C++ 中以下是非法的, 編譯將出錯, 因?yàn)閮烧呓馕龀鰜矶际穷愃朴?foo:int, 編譯器無法辨別.
int foo(int bar, int bar1);
char* foo(int bar, int bar2);

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

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

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

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

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

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

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



查看完整回答
反對 回復(fù) 2018-12-19
  • 1 回答
  • 0 關(guān)注
  • 709 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號