學過C,如何快速上手C++?


不可能的,慢慢學


這張圖又能再用一次


不知道題主所言的「快速上手」指的是C++學習到什麼程度。如果你指的是用C++編程的話,基本上,你會用C。C++也可以說是能用了,因為基本完全兼容C的。。前提還是需要知道題主的C到了什麼程度了。

如果你是指面向對象的部分,那麼我建議你可以通過Java來學面向對象,有了面向對象概念深入理解之後,再回過頭來學習C++也不遲。如果你覺得把C++用成 C with class,就是快速上手的話,那這個不難。。。

另外,面向對象只是C++眾多編程範式中的一種。並不是全部。著名的STL庫,幾乎就可以說是反面向對象概念的。因為它把對象和演算法又分開了。。。不要說容器類裡面有成員函數,就是面向對象了。從整個庫的設計角度而言,還是違背面向對象的很多理論的。

函數式編程是在C++眾多編程範式中後來居上的一種範式。也比較有趣。

不同的範式,沒有高低貴賤之分,喜歡一門語言,就要用自己喜歡的方式去使用她,就像對待女朋友。你可以選擇你喜歡的方式,你喜歡的範式,去使用C++, this is ok.

另外初學者,總是感覺C++ 是C的升級版,所以就覺得C++吊,其實C語言本身也博大精深啊。也建議題主思考一下是否對C有深入挖掘了,急於學習C++的目的是什麼?


快速解決一個問題是可以的,但追求快速掌握一門技能不應該。你敢把自己的命交到速成班學出來的司機手上么?


真的已經掌握C的人,不會問這個問題。


記住這句話:視C++為一個語言聯邦。——《Effective C++》第一章,條款1。

切記至少要從C++11/14學起,當然有大神帶你飛的話從17開始也可以。

對初學者來說,C++14對比C++11最重要的改動就是lambda表達式傳參可以用auto表示類型——lambda變成了模板,於是std::bind作廢,學習的時候直接帶過。

對於C基礎,可以稍微學一點Haskell,對沖一下思維,否則非常容易跑偏——只會C語言對學習C++是有反作用的。時間充裕的話可以學Rust來輔助C++,二者的設計思維如出一轍,而且Rust沒有歷史包袱。

入門學語法用《C++ primer》第五版,要不帶plus的那個。

引用下Quora的一個回答:

《Plus》是一本爛書,在1991年的C++語言版本上插入了一些C++03內容,就成了2012新版書了。作者對很多C++的概念理解都是錯的。

而Lippman是C++語言發展演進的核心人物,了解最新語言標準的來龍去脈與一切細節。無可撼動的權威之作

也就是說,用這本:

記住所有和功能相近但是在C++中有替代品的一定要用C++的,因為C++這些設計就是給它填坑用的。比如函數指針全用std::function + lambda代替。(iostream的格式化不算,和printf/sprintf對應的替代品是boost::format)。

其實,就算是受C語言影響的C++風格還是有救的,要是真學成java風格的C++基本上就可以放棄治療了。

結構化編程(面向過程)、面向對象、基於對象、函數式、泛型編程、模板元編程。C++的編程範式目前基本上就是這幾棵技能樹。

模板元編程入門困難的話,參考這個: C++模板元編程

另外補充一下:要學面向對象思想的話,不要學java,學Ruby。C++和java的面向對象本身是半殘的。但是C++的對象模型的設計與運行機制是好東西。

面向對象這東西最重要的是消息傳遞。


C和C++的區別,就像類人猿與現代人的區別那麼大,除了都能直立行走以外,共通的地方,真的不太多。這本來就是兩種語言。


寫了十年C代碼的人也不敢說自己已經掌握C


僅僅會編程很容易,難的是觀念的轉換。一個是過程,一個是對象。我見過太多用C++語言,然後C得的思維編程的程序員了。


頭文件改成cstdio


直接上手練習!

推薦 Tutorials - C++ Tutorials ,一個下午看完一半,並把上面的例子都做一遍了。這個文檔里講得內容都比較基礎,但還算是很實用的。更多細節一些的地方,就得靠看磚頭一樣的書和標準庫、以及長期的實戰來慢慢積累了。


自己經歷:

大一學c和JAVA,都學的比較紮實,假期看過一點點c#,現在大二開學,開了c++。本來對語言不在感興趣,開學幾周沒打算學,只是沉迷於JAVA,後來數據結構變代碼要用c++這才急了。大概用了7天看完了c++基本語法和io流,直到學數據結構夠用了,就不學了。感覺是:規則挺多的,但不難,沒有沒接觸過的概念啥的。

最後:要快速上手,把書(視頻)快速看完,照書敲代碼並理解。以上。


當時為了寫遊戲伺服器,草草看了本&<&&>....


寫過啥c實現的程序或者代碼,c++實現一遍


大哥, 這東西不僅在語法 在於C++的各種技巧 更在於思想,快速精通…… 你還是腳踏實地的學吧


你是花了21天掌握C嗎


個人覺得最快的方式就是上機做小項目,這個應該是最快的速度,遇到不懂的再去看書,比你先看書在實踐要深刻的多,還有c和c++雖然看起來差不多,但是c++是面向對象的編程語言,c是面向過程的,還有c++的函數重載多態是從沒有的,裡面有很多小細節不同的,不要想學過c就覺得懂了c++,慢慢來


學一門語言,主要是先要掌握這門語言的特性,我相信你學習c的時候,主要是掌握了面向過程的編程方式,至於語言的類型系統,流程結構,都是大同小異的。那麼如何快速上手c++,那麼就要從c++的特性來學,c++的特性很多,這裡為了題主所說的快速上手,我可以理解為快速上手傳統c++。傳統c++的顯著特性是什麼?當然是面向對象,其中有封裝,繼承,多態,模板這些c語言沒有的概念,題主可以從這些概念入手學習,其中肯定會遇到很多小細節,這些細節就會慢慢豐富自己的c++知識面,等題主真的掌握了這些概念之後,最後再去看c++11以後的特性。


掌握C

21天那種?


大家想多了,題主估計掌握了了一些基本語法而已。從這一點來說,c和c艹差不多。


推薦閱讀:

清華大學計算機系與普通大學計算機系的區別?
自學c#目的unity遊戲開發,基礎幾乎為零,沒學過數據結構和演算法。怎麼辦?
如何通俗易懂地解釋什麼是演算法?
清理內存是否能為計算機提速?
如何有效地閱讀論文等文獻資料?

TAG:編程 | C編程語言 | 計算機科學 | C |