C++進階之路漫談

來源:互聯網
上載者:User

此前看到一句話,說“我決不相信一個不懂得物件模型及其記憶體分布的人說他精通C++”,對此半信半疑。但出於個人觀念,我還是想搞清楚對象記憶體分布、處理器指令及其與記憶體之間的互動實現方面的細節。

雖然電子出身,說實話,在校期間學得並不算好,在校期間也沒就這個問題去深入的跟同學和老師討論,以致錯失良機。有了這個意願,就在論壇和搜尋引擎裡邊輾轉,估計是自身水平所限,提的問題和搜尋的關鍵字都沒切中要害,偶然發現一些相關的表述時卻不甚其解,收益不大。由於其他工作需要,也沒進一步深度查究。

去年11月份,在網上搜到一本《程式員的自我修養》(俞甲子等著),粗略一看甚合口味,於是在接一下來的三天時間裡猛啃而解之,猶如久行於撒哈拉沙漠發現了月牙泉,以前的許多疑惑統統被掃除。才發現約束自身的關鍵在於編譯連結和記憶體分布這一關,也無怪當初沒有聽過編譯原理和作業系統,對於這些東西缺乏系統的概念。

程式的編輯編譯到連結載入這一關通了,記憶體的分布模型也基本了明,但是CPU是如何調用記憶體中的彙編指令同時又如何更改各參數值和串?雖然也懂一些彙編和處理器寄存器方面的知識,但依然很疑惑。後來直到找到了指標寄存器BP和虛函數表VTBL,很多疑惑方才一一驅散。隨著認知的進一步深化,也感覺學校裡的教育存在的諸多問題:課程設定雖然全面,但卻沒有注重課與課之間的融合。也難怪自己當初那般丈二和尚模樣。

知道了以上三點,回過頭再來看C++中的模板、STL和其他的相關進階技術,許多問題迎刃而解。

隨著這些年JAVA、Objective C、C#和Dephi語言的引入,許多應用均趨向於採用特定架構來解決問題,這也就決定了程式員對於業務本身和軟體的本質要有足夠的理解。但C++本身有其特別的靈活和高效特性,更關鍵的在於它從底層到介面各個情境的具體應用保證了它的博大精深,諸多問題還有待挖掘和學習。

未來的路很長,期待大家相互協助共同前行。如有不當和欠妥之處,懇請不吝指教。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.