1. 程式人生 > >如何學好C++語言?!

如何學好C++語言?!

在學習C/C++或者想要學習C/C++可以加入我們的學習交流QQ群:389318488

  • C++是最難的語言。這個世界上最難的程式語言可能非C++莫屬了。你千萬不要以為幾天就可以學好C++,C++的學習曲線是相當BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到了有點BT和恐怖的地步。我甚至認為C++並不是一門成熟的程式語言,因為太容易犯錯了。所以,你一定要在一開始就要有很小心謹慎的態度,並把C++當成一種難以訓服的猛獸來看待。

  • 多問“為什麼要這樣”的問題。學習C++一定要多問幾個“為什麼是這樣”,“憑什麼要這樣”的問題。比如:很多人知道C++有拷貝建構函式和初始化列表,但你真的知道為什麼要有拷貝建構函式?為什麼要有初始化列表嗎?為什麼要有template,為什麼要有RTTI,為什麼不是別的呢?難道就是為了讓一門語言變得Cool一些嗎?完全不是這樣的,C++中的任何一個feature都有些實實在在的原因,你一定要去了解為什麼要把C++設計成這樣的原因,你才能學好C++。有空看看《C++演化和設計》一書。

在學習C/C++或者想要學習C/C++可以加入我們的學習交流QQ群:389318488

  • 看書,大量的C++書。你可以按如下先後順序閱讀(下面這些書,我花了大約4-5年的時間,今天我還在隨時溫習)

    • 《C++ Primer》,這本初級讀本可能讓會你啃得很痛苦,所有的語言的特性和為什麼都在裡面了,好好讀讀。當然由C++之父寫的《C++程式設計語言》也不錯。兩本看一本就好了(我看的是前者)。

    • 瞭解C++的語法僅僅是萬里長征的第一步,你還需要看看《Effective C++》和《More Effective C++》這兩本書並不厚,但我從02年就一直看到現在,每次讀我都有新的體會,這兩本書太經典了。如果你對C語言不熟,這兩本書會讓你回去補C語言的課。

    • Think in C++同樣是另一本經典之極的書,學c++必讀,但是中文版的翻譯的很不好,所以還是去讀英文版的吧。

    • 《C++沉思錄》同樣非常值得一讀,這裡教的不是程式設計,而是思考的方法,這是相當珍貴的。

    • 《Exceptional C++》和《More Exceptional C++》讓你看看各種問題的解決方法和一些常見的經典錯誤。

    • 《Advanced C++》和《Modern C++》可以讓你知道C++各種神奇的用法。

    • 《泛型程式設計與STL》是把C++實踐到了極致的東西。很強大。STL——神一樣的模板庫(容器,演算法和函式物件),不得不服。

    • 《深入探索C++物件模型》讓你瞭解編譯器下的C++是什麼樣的,讓你瞭解C++的效能並不差。這個對於C++的程式設計師太關鍵了。我以前寫過的《C++虛擬函式表解析》還有《C++物件記憶體佈局》屬於這個範疇。

  • 和Java語言做對比。我個人以為Java對C++這個並不成熟的語言做了很多調整,規範和限制。所以,對比一下Java和C++,想一想,為什麼一些東西在C++中可以做,但在Java中卻不行。比如:Java的異常是必需要catch的,不然就會編譯不通過。為什麼Java不提供操作符過載?為什麼Java會引入介面來做多重繼承?為什麼Java沒有像C++那樣的I/O字元流?為什麼Java不支援指標?為什麼Java可以做到垃圾回收?等等。Java體現著很多面向物件設計的東西,學習Java有助於你學會怎麼更好地使用C++來程式設計。

  • 面向物件設計 。雖然面向物件可能是個騙局。但是我覺得面向物件設計中的一些實踐非常的不錯,比如,單一原則,依賴倒置原則,等等,都非常地經典。《設計模式》必需一讀,《面向物件的分析和設計》可以一讀。但不可以設計模式為中心來程式設計,而應該是用設計模式來解藕。

  • 類庫學習。看看MFC是怎麼封裝Windows API的,看看ACE是怎麼面向物件的,看看boost是怎麼玩面向物件的,看看CPPUnit又是怎麼設計的。當然,Java的JDK中有太多的設計模式,可以參考。

在學習C/C++或者想要學習C/C++可以加入我們的學習交流QQ群:389318488

更新幾個觀點:

  • 1)我不擅長寫書評,所以推薦的這些書可能會讓你有點看點沒有感覺,你可以上豆瓣或是China-pub上看看書評。

  • 2)C++有很多奇淫技巧,有的很BT,包括虛擬函式表,也許會有人覺得有點沒意思,但我覺得很有意思,一方面可以瞭解一門語言的實現細節,另一方面可以開闊思路。我從學習這些知識中受益很多。

  • 3)上述是我的個人的學習歷程,我覺得對我很有效,所以是經驗之談。

  • 4)這類的文章在網上有很多很多,我不是第一個寫這樣的文章,我也不是寫得最好的,我並不希望用長篇大論來談論什麼。只是想給大家瞭解一下大概的學習樣子。畢竟,C++博大精深,任何一篇文章都無法說好。不如就簡單一些。

相關推薦

思路不對努力白費0基礎學好C語言程式設計,必須掌握的學習思路

計算機行業發展非常快,大學裡的教育基本都跟不上實際的社會需求。如果你所在的學校還在指定大家使用譚浩強的教材,或使用VC6.0來教大家上機實驗,那你不妨看看本文,這裡有一些建議可以幫助你不會脫離社會太遠。 考慮到這是一個過來人感覺很基礎,但是對於初學者又覺得困難重重的問題,我想如果這篇文章

學好C語言?先把基礎打好再說吧

C語言是面向過程的,而C++是面向物件的 C和C++的區別: C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。 C++,首要考慮的是如何構造一個物件模型,讓這

如何學好C++語言

在學習C/C++或者想要學習C/C++可以加入我們的學習交流QQ群:389318488 C++是最難的語言。這個世界上最難的程式語言可能非C++莫屬了。你千萬不要以為幾天就可以學好C++,C++的學習曲線是相當BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到

初步了解c語言

使用場合 清晰 占用內存 掌握 技術 學習機 調試 spa 執行效率 剛開始學習時候,老師並沒有直奔主題,而是先帶我們了解什麽是程序,什麽是算法,流程圖,和c語言的發展史一些東西,從而來輔助我們我們以後的學習。 下面就開始簡單介紹一下所學的內容: C 語言簡介 C 語言

C語言實現粒子運動效果,最美C語言最炫酷C語言

eight src tps space hit size fad mar font 效果 我有一個微信公眾號,經常會分享一些C語言/C++技術相關的幹貨;如果你喜歡我的分享,可以用微信搜索“C語言學習部落”關註歡迎大家加入千人交流答疑裙:627+012+464C語

小白怎樣才能學好c語言

有人問我c語言是不是很難學,我說不是,後來問的人多了,我就萌生了寫一篇關於c語言如何入門的文章的念頭來。 其實c語言很簡單,它只是一種交流的規則,一種表達的工具,一種承載思想的容器而已,之所以感覺難,我覺得是還不習慣使用計算機特點來考慮問題。這就好比中國人從到英國定居一樣,雖然你學過英語,但

0基礎如何學好c語言

1、下載和安裝編譯器。   C語言需要通過編譯器解釋為計算機可以理解的機器碼。 編譯器通常是免費的, 不同的作業系統上一般使用不同的編譯器。   對於Windows系統, 可以嘗試 Microsoft Visual

要想學習C++?先得看看C語言

C++ 讀作“C加加”,是“C Plus Plus”的簡稱,C++是C語言的繼承,它既可以進行C語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的面向物件的程式設計。C++擅長面向物件程式設計的同時,還可以進行基於過程的程式設計,因而C++就適應

如何學好C++語言

昨天寫了一篇如何學好C語言,就有人回覆問我如何學好C++,所以,我把我個人的一些學習經驗寫在這裡,希望對大家有用。首先,因為如何學好C語言中談到了演算法和系統,所以這裡就只談C++語言。 C++是最難的語言。這個世界上最難的程式語言可能非C++莫屬了。你千萬不要以為幾天就

如何學好C語言

寫這篇文章的主要目的是作為過來人想給初學者一些學習建議。掌握一個好的學習方法,往往可以事半功倍。 想窺探神祕的程式碼世界?最好的入口無疑就是C語言。 C語言是計算機體系結構的基礎,向下可以操作硬體(包括ARM,DSP,微控制器等各種微處理器),還可以寫驅動,寫OS,寫編譯

如何學好C語言[轉載]

原文地址: http://coolshell.cn/articles/4102.html 有人在酷殼的留言版上詢問下面的問題 我相信,這可能是很多朋友的問題,我以前也有這樣的感覺,程式設計編到一定的時候,發現能力到了瓶頸,既不深,也不紮實,半吊子。比如:你長期地使

淺析如何學好C語言 .

一、要讀就讀好書,否則不如不讀   所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。   大名鼎鼎的譚浩強教授出了一本《C語言程式設計》,據說發行量有超過400萬,據我

12天學好C語言——記錄我的C語言學習之路(Day 1)

12天學好C語言——記錄我的C語言學習之路 Day 1: 剛剛入門C語言,那麼肯定要先把什麼是C語言和大家講清楚,那麼大家看下面一段程式(program  1.1): /*//program 1.1 #include<stdio.h>  //編譯預處理指令,編譯

如何學好C語言(轉)

我相信,這可能是很多朋友的問題,我以前也有這樣的感覺,程式設計編到一定的時候,發現能力到了瓶頸,既不深,也不紮實,半吊子。比如:你長期地使用Java和.NET ,這些有虛擬機器的語言對於開發便利是便利,但是對於程式設計師來說可能並不太好,原因有兩個: 1.虛擬機器遮蔽了作業系

如何學好C語言----轉自酷殼coolshell.cn

有人在酷殼的留言版上詢問下面的問題 我相信,這可能是很多朋友的問題,我以前也有這樣的感覺,程式設計編到一定的時候,發現能力到了瓶頸,既不深,也不紮實,半吊子。比如:你長期地使用Java和.NET ,這些有虛擬機器的語言對於開發便利是便利,但是對於程式設計師來說可能並不

人生需要規劃,學好C語言程式設計,把握自己的未來,are you ready?

C語言和其他高階語言不一樣,它的很多操作都是直接面向記憶體(面向硬體)。困難的是,對於C語言,不論是資料型別、操作符、語句、函式,都或多或少、或簡單或複雜地通過地址操作記憶體。 幸運的是,一旦掌握記憶體,程式碼功能會非常強大,執行效率非常之高。 2018年畢業的大學生

程式比程式設計師更理解c語言 cdecl程式(分析c語言的宣告

c語言的宣告有時侯是很複雜的;比如int (*a[5])(int); 再比如:int*((*p)(int))(int);你能說明白它們的意思嗎? 像這樣的宣告很容易把一般的程式設計師弄蒙逼的。 cdecl是一個分析這種宣告的程式,輸入宣告形式,用英語輸出其描述。 我們也可

如何學好C語言 & 如何學好C++

這兩篇文章是在一個部落格上看到的,這個博主寫的我長期以來一直覺得很受用,推薦一下:  http://coolshell.cn 如何學好C語言 我相信,這可能是很多朋友的問題,我以前也有這樣的感覺,程式設計編到一定的時候,發現能力到了瓶頸,既不深,也不紮實,半吊子。比如:你長期地使用Java和.NET ,這些

(轉)如何學好C語言

有人在酷殼的留言版上詢問下面的問題 我相信,這可能是很多朋友的問題,我以前也有這樣的感覺,程式設計編到一定的時候,發現能力到了瓶頸,既不深,也不紮實,半吊子。比如:你長期地使用Java和.NET ,這些有虛擬機器的語言對於開發便利是便利,但是對於程式設計師來說可能並

0基礎學C語言C語言視頻教程免費分享

軟件 適合 密碼 計算機程序 計算機編程 學c語言 應用軟件 技術分享 朋友 C語言是一種通用的、過程式的編程語言,廣泛用於系統與應用軟件的開發。作為計算機編程的基礎語言,長期以來它一直是編程愛好者追捧而又比較難學的語言。C語言是一種計算機程序設計語言,它既具有高級語言的特