代辦公正為程式設計的思惟觀念更前進了,所以又有更嚴密的區隔)。概略地說,前者是指
以上只是個很小的例子,總之,C++ 為了殺青兼容效力和彈性的理念,在不
解決,只能好自為之。但在 C++ 上,假如種別設計夠嚴謹,編譯/聯絡器平日可以
int d = 4;
封裝(encapsulation)的編程模式;爾後者涵蓋了繼續(inheritance)及動態繫
這個限制 翻譯社顯然,C++ 的方式對照公道,因為強制把宣佈放在最前面,極可能
斷成長進化的過程中,直至今朝為止,已綜合歸納出,而且實現了四種分歧,而
舉例而言,在 C++ 中,你可以寫一個支援四則運算的超大整數 BigInt 翻譯類別,
做),而可以安心的利用兼具效能、移植性和擴充性的 STL 組件和演算法,大大晉升
如果你熟習 C,但不熟習 C++,你一定會說:「這怎麼可能?????」但這
指向函式的指標這類禁斷手藝 翻譯語言,會在眾語言百家爭鳴下脫穎而出,也就不
一致明確 翻譯語法表達、加倍具有彈性和擴充性,且更有用率 翻譯函式物件(function
而明白,例如你可以「等閑」寫出像 BigInt(超大整數)、VarLenInt(更動長度的
式--把功能切割成恰當 翻譯小模組,在 C 語言中就是一個一個小函式,再按需求
而言,都是弗成能實現 翻譯。並且,透過 C++ 封裝機制和其他如異常處理的支援,
常常去向理複雜、過於低階的陣列、指標、位元等等運算(當然有需要時仍是該這麼
,自由靈活地操控記憶體。而在嚴謹的法式導向編程思維 翻譯年月,像 C 這類支援
的氣概完全不同 翻譯社在多數人的心目中,C 是簡練、靈巧、短小精桿的,而 C++,當然
就更美麗、輕易浏覽、理解,一致性高,就不易犯錯,方便保護 翻譯社總之,封裝機制對
太多太多,每一項,都是為了讓程式設計更嚴謹、明白、語法更自然、簡潔、一致、
某些物件基本用不到,卻必需在函式每次履行 翻譯時刻去設置裝備擺設記憶體 翻譯社
面提過 翻譯「使用者不需要為他沒有效到的功能支出效率的代價」,如許 翻譯抱負。
,就是:「使用者不該為他沒有效到的功能付出效率 翻譯價格」 翻譯社這句話直接的
也就是 object-based 翻譯根蒂根基,讓程式設計師可以更進一步以嚴謹、平安,天然、
概略地說,C 自己十分精簡,保留字少少,語法簡潔、設計風格偏向精確、
STL,程式設計師不消再每次本身寫 tree、list、stack、queue ...等等,也不需要
1. procedural-based paradigm
理、引入 exception 異常處置 翻譯機制、引入 namespace 命名空間的機制……等等,
一個,然後就可以簡單的計較像 1^100 + 2^100 + ... + 100^100 = ? 這種問題:
進修程式設計的思惟方式);但,要體味 C++ 的精華,先領會 C 的特性和氣概
言歸正傳,所謂 object-based paradigm 和 object-oreinted paradigm ,
,就不多計議了。不外有一點可以提出來:只有少數的語言支援完全 翻譯多重擔當,
乖巧的編排組織起來。
for (BigInt i=1; i<=100; ++i)
幫你解決很多小麻煩。此外,如果你 翻譯 BigInt 類別設計允當,它執行時 翻譯效力,
C++ 用以具現泛型編程設計模式的方式,是引入樣版(template)及其他相互
結(dynamic binding) 翻譯機制。
C 及 C++ 是今朝最受歡迎 翻譯語言之「二」 翻譯社常人常常感覺二者差不多,
那麼 C++ 到底有何不同呢?用一句最簡單的話說,貫穿 C++ 的全部理念
C++ 承續了 C,固然也支援函式指標,但 C++ 程式的氣概,並不鼓勵利用指
b = "458349057395730974539451048634826832629683342310298457";
例如不當心把 BigInt 和浮點數混用;像這類的問題,在 C 上平常都沒有門徑完全
像這樣 翻譯語法表達,在沒有或對 object-based 編程手藝支援不夠完備的說話
每種編程手藝 翻譯支援,都達到最完整的水平 翻譯社正因為它完備,才能儘可能切近前
object),來庖代 C 的函式指標的手藝。
曾表示,他認為 Java 早晚也會到場雷同 C++ 的 template 的機制,這是任何一個
一致的體式格局,模塑抽象的思維世界。這部份在觀念和手藝上都有相當水平的複雜性
,不夠完整。事實上,C 和 C++ 的差距十分大。
概就是,它困難的水平,也周全超越了 C)(全國沒有白吃 翻譯午餐)。你應當會想
, C 語言中所有物件(變數、結構)的宣佈都要放在最前面,在 C++ 則沒有
靈巧。它同時具有高階說話流程控制與資料處置 翻譯便當性,和低階語言直接
甚至,如果你喜好 BASIC 的次方(^)符號表式法,你可以在 C++ 中自己設計
BigInt sum = 0;
,還是很有幫助的。
又相輔相成的程式設計的思惟模式:(因為沒有準確 翻譯字面譯詞,先寫英文,後
更加具有彈性和擴充性,同時不損失、甚至提拔效力)(獨一的錯誤謬誤,呃……,大
雖然,連 C++ 翻譯發明人都說,可以不消學 C,直接學 C++(敝人在之前一
體組件抱負最重要的第一步 翻譯社
最後,generic paradigm,泛型編程。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯這是相當晚近才興起的程式設計的思維
而 C++ 恰是個中之一;其他如 Objective C, Object Pascal, Smalltalk 等,並
c = -a/4 + b * 2;
Essential COM 的作者 Don Box 在書中提到:C++ 此中一個主要的理念,就
之卻步)的個中一個緣由就在於:C 擁有指標 翻譯設計,可以在最大限度的規模內
是讓利用者可以自訂型別,並且在處理自訂型別時,和操作內建型別一樣天然、便
其次,繼承和動態繫結,也就是 object-oriented 編程技術,建築在封裝,
client(使用這些類別的人)而言,是極為便當而不可或缺的,幾乎可以說是邁向軟
不克不及說沒出缺點(沒出缺點就透露表現沒有進步空間了),但我仍是只能用唯一的「偉大」
(包含以位元)操作記憶體的細密性。
沒有提供多重繼承,而 Java 也只支援有限型式 翻譯多重繼續 翻譯社
所謂全面是指:編譯/聯結器供應更嚴謹、更平安 翻譯查抄,語法表達更一致明白、
面再注釋)
必需特別提到一點,C 之所以受很多程式設計師青睞(也同時令另一些人望
問:「真的嗎?若是是真的,C++ 究竟是怎麼做到 翻譯?」沒錯,並且這就是之前我
和效率 翻譯精神,所泄漏 翻譯潛力被一致看好,泛型編程理念的很早就被引入了 C++,
擴充性更高。
固然,完全的多重繼續增加了語法的複雜度,使用上不見得是長處 翻譯社但提出這
、明白、彈性、擴充性、效率……等等的方針 翻譯社例如以 const 和 inline 儘可能取
3. object-oriented paradigm
c %= d;
一點只是想說明,C++ 不但支援四種首要的編程技術,更主要的關鍵在於:C++ 對
a = "-3298347290354325472309573874327432094739742071561";
篇回覆書記中曾接頭過,這個說法應當只是指說話自己,而不是指直接透過 C++
BigInt a 翻譯公司 b, c;
代 C 的巨集,引入 const、mutable、new、delete 等關鍵字,加強物件和記憶體管
模式。很榮幸地,在 C++ 還不是很完整時,由於整個說話在各方面貫串了兼具彈性
這二者即是幾年前一般所謂 翻譯「物件導向」編程模式(現在之所以有所辨別,是因
而今朝,泛型編程的技術在 C++ 上的實現應當也是最成熟 翻譯。B.S.(C++的發現人)
整數)、Matrix(矩陣)、DateTime ……等等 翻譯種別。語法表達天然、明白,程式
來形容它。
們即將接洽的主題,C++ 就是靠著別的三項(C 說話其實不支援 翻譯)編程手藝,將此
2. object-based paradigm
在解釋之前,先說一點,C 和 C++ 的分歧的地方就在於,以上所列 C++ 的四
種編程思惟,C 只提拱了第一種,也就是我們常聽到的「程序(功能)導向」模
就是支援物件導向的 C。當然,不克不及說這些講法是錯的;是的,這些沒錯,只是
編程 翻譯社透過 C++ 種別(class)的封裝機制,你可讓程式說話表達地更天然、一致
邁向成熟而完備 翻譯說話天然的趨勢。
不會比一樣功能的 C 程式碼最好化後要差。
sum += i^100;
效率要求 翻譯,堪稱最「標準」的函式庫 STL(Standard Template Library) 。有了
事實上,C++ 所有分歧於 C 的功能,都是為了達成上述的更嚴謹、平安、一致
了生產力。(固然條件是要學得會)
總之,以上所討論的每一項特征,都使得 C++ 翻譯程式設計,在基本上就和 C 說話
或,常聽到有人說,C++ 是 C 的超集合(或 C 是 C++ 的子集),或,C++
向函式的指標。在 C++ 中,供給了一種更嚴謹、具有型別安全(type safe)、更
太不測了。
4. generic paradigm
是事實 翻譯社並且,事實不只如此,可以說,幾近在每個處所,C++ 都周全超出了 C(
理念付諸實現 翻譯社
引申意義則是:「C++ 兼具了效率與彈性」。舉個例子,我們都知道,在之前
讓它在利用上與內建型別毫無分別:
你可以嚴厲地制定型別平安(type safe)的規格,儘早地讓毛病 翻譯操作行為曝露,
共同 翻譯機制(如 RTTI,動態型別辨識),和在泛型編程的基礎上,吻合了嚴酷的
利。以上這段話可能可以看成詮釋「封裝」 翻譯註腳,這也就是所謂的 object-based
文章來自: http://blog.xuite.net/edison901/documents/3753230-C+%E5%92%8C+C%2B%2B+%E7%9A%84%E5%B7%AE%E5%88%A5+--有關翻譯的問題歡迎諮詢華碩翻譯社