可能重複:
The Definitive C++ Book Guide and List如何在C++中啓動面向對象編程?
基本上我是從C,嵌入式C場。在這個領域工作了5年後,我想開始C++。現在,我開始學習C++。但班級概念並沒有點擊我的腦海。 請建議我該如何啓動Class概念或者一些簡單易用的網站,以便我可以輕鬆啓動C++。 並請建議我一些很好的C++問題(我可以找到一些C++練習的網站)。
可能重複:
The Definitive C++ Book Guide and List如何在C++中啓動面向對象編程?
基本上我是從C,嵌入式C場。在這個領域工作了5年後,我想開始C++。現在,我開始學習C++。但班級概念並沒有點擊我的腦海。 請建議我該如何啓動Class概念或者一些簡單易用的網站,以便我可以輕鬆啓動C++。 並請建議我一些很好的C++問題(我可以找到一些C++練習的網站)。
C++最初是從C,這本書可以幫助你瞭解C++:「裏面的C++對象模型」
如果你想學C++,Stroustrups「C++語言」,是一個非常好的起點IMO 。我個人也從斯科特邁爾斯學到了很多「有效的C++」和「更有效的C++」
另外我認爲,考慮到你的嵌入式背景,你可能不僅需要「學習語言」,而且還需要你的理解面向對象編程。我認爲這個領域的基礎書籍之一是Grady Booch的「面向對象的分析和設計」和「四人幫」:Gamma/Helm/Johnson/Vlissides「設計模式」(儘管這兩本書都是用Java背景編寫的)
看一看Definitive C++ Book Guide。既然你有C背景,我會推薦Koenig和Moo的「Accelerated C++」,因爲它從一開始就顯示了Modern C++ ideoms中的代碼。 這可能會幫助您專注於C和C++之間的差異,並向您展示您將不得不忘記的C習慣的哪些部分。
「Class」的概念可以很容易地模擬到包含數據成員和指向包含函數指針(v表)的結構的指針,其中所有函數都有一個「隱藏」參數Class* this
。這就是說,如果你已經熟悉結構,指針和函數指針,類沒有什麼「神祕」。
其他一切都是「使用藝術」,它本身並不涉及類概念本身,而是與它們如何安排具有有效的可維護代碼有關。
在這一點上,你可以
對於最後一點科尼格和武「加速C++」一書可以是一個很好的入門:它不考慮C,但如何C++和它的庫應該使用和-after會越陷越深詳細地展示那些概念來自哪裏。
類的大多數*有趣*用法都不是與虛函數有關,而是與訪問控制(私有/公共),運算符和構造函數/析構函數有關。換句話說,沒有任何東西像C struct – jalf 2012-02-10 09:32:41
@ Jalf:我同意,但是*除非離開地面,否則你不能飛翔* OP詢問什麼是課堂,你的評論是關於它的內容 我在談論「地面」的概念和動詞「leave」的意思,在OP瞭解之後,你就不能開始談論動詞「fly」和關於「飛行控制系統」 說到「飛行控制系統」不知道飛機的存在是無知的。 我明白所有這些都可以是可以理解的,但是對於可信的重新下定論asons is prejudice.- – 2012-02-10 09:40:34
所以,你不會描述飛機的飛行能力?我認爲某件事的目的*在理解它時非常重要。我們可以將飛機稱爲「可以飛行和載客的東西」,或者稱之爲「內部有大量座椅和兩個扁平金屬突出的超大型鈦金屬雪茄」。如果你想了解課程,你需要考慮他們的用途。一個類允許你定義一個新的數據類型,它允許你對該數據類型施加行爲。 ctors/dtors是必不可少的。虛擬功能不是。 – jalf 2012-02-10 09:48:51
初學者? – Nikko 2012-02-10 08:57:02
「基本上我來自C,嵌入式C領域,在這個領域工作了5年後,我想開始C++。「 – Proteas 2012-02-10 09:12:20