2012-02-10 57 views

回答

1

C++最初是從C,這本書可以幫助你瞭解C++:「裏面的C++對象模型」

+0

初學者? – Nikko 2012-02-10 08:57:02

+0

「基本上我來自C,嵌入式C領域,在這個領域工作了5年後,我想開始C++。「 – Proteas 2012-02-10 09:12:20

2

如果你想學C++,Stroustrups「C++語言」,是一個非常好的起點IMO 。我個人也從斯科特邁爾斯學到了很多「有效的C++」和「更有效的C++」

另外我認爲,考慮到你的嵌入式背景,你可能不僅需要「學習語言」,而且還需要你的理解面向對象編程。我認爲這個領域的基礎書籍之一是Grady Booch的「面向對象的分析和設計」和「四人幫」:Gamma/Helm/Johnson/Vlissides「設計模式」(儘管這兩本書都是用Java背景編寫的)

4

看一看Definitive C++ Book Guide。既然你有C背景,我會推薦Koenig和Moo的「Accelerated C++」,因爲它從一開始就顯示了Modern C++ ideoms中的代碼。 這可能會幫助您專注於C和C++之間的差異,並向您展示您將不得不忘記的C習慣的哪些部分。

0

「Class」的概念可以很容易地模擬到包含數據成員和指向包含函數指針(v表)的結構的指針,其中所有函數都有一個「隱藏」參數Class* this。這就是說,如果你已經熟悉結構,指針和函數指針,類沒有什麼「神祕」。

其他一切都是「使用藝術」,它本身並不涉及類概念本身,而是與它們如何安排具有有效的可維護代碼有關。

在這一點上,你可以

  • 嘗試自己編寫設計達路一個C程序(注意複雜,只是爲了獲得線索)或
  • 忘記C本身,並試圖瞭解概念應該使用(而不是技術上的)。

對於最後一點科尼格和武「加速C++」一書可以是一個很好的入門:它不考慮C,但如何C++和它的庫應該使用和-after會越陷越深詳細地展示那些概念來自哪裏。

+1

類的大多數*有趣*用法都不是與虛函數有關,而是與訪問控制(私有/公共),運算符和構造函數/析構函數有關。換句話說,沒有任何東西像C struct – jalf 2012-02-10 09:32:41

+0

@ Jalf:我同意,但是*除非離開地面,否則你不能飛翔* OP詢問什麼是課堂,你的評論是關於它的內容 我在談論「地面」的概念和動詞「leave」的意思,在OP瞭解之後,你就不能開始談論動詞「fly」和關於「飛行控制系統」 說到「飛行控制系統」不知道飛機的存在是無知的。 我明白所有這些都可以是可以理解的,但是對於可信的重新下定論asons is prejudice.- – 2012-02-10 09:40:34

+0

所以,你不會描述飛機的飛行能力?我認爲某件事的目的*在理解它時非常重要。我們可以將飛機稱爲「可以飛行和載客的東西」,或者稱之爲「內部有大量座椅和兩個扁平金屬突出的超大型鈦金屬雪茄」。如果你想了解課程,你需要考慮他們的用途。一個類允許你定義一個新的數據類型,它允許你對該數據類型施加行爲。 ctors/dtors是必不可少的。虛擬功能不是。 – jalf 2012-02-10 09:48:51