C++的学习感想
原作者姓名?robindy?
正文
???????很多人把學習C++語言當成學習VC了,我曾經(jīng)就走過這樣的彎路。當學了很長時間的VC后還是得回過頭來學習C++語言本身。
???????那么學習C++從何處入手了?
????????C++語言相對于C語言來說引入了兩個大的新東西,一個就是面向?qū)ο?#xff08;具體來將就是類),另外就是模板技術(模板編程或者叫泛型編程是進來非常流行的技術,在C#中雖然還沒有對泛型編程的支持,但是相信在將來也一定會加入這一功能),模板是C++中比較復雜的部分,但是作為一個真正的C++程序員,這部分很重要。尤其是對C++標準程序庫的掌握尤為重要。
????????剛開始的時候千萬不要直撲VC中的各種向?qū)Ш驮O計器。因為依賴開發(fā)環(huán)境生成的很多代碼會把我們搞糊涂,也不利于我們學習C++語言本身。我的建議就是生成一個空的控制臺工程,然后自己向里面添加文件。
????????如下就是一個簡單的控制臺程序:
?????????//robindy/list.cpp
????????????#include??
????????????#include??
????????????using?namespace?std;
????????????int?main()
????????????{
????????????????listcoll;
????????????????for(char?c?=?'a';?c?<=?'z';?++c)
????????????????{
????????????????????coll.push_back(c);
????????????????}
????????????????list::const_iterator?pos;
????????????????for(pos?=?coll.begin();?pos?!=?coll.end();?++pos)
????????????????{
????????????????????cout?<<?*pos?<<?'?';
????????????????}
????????????????cout?<<?endl;
????????????????return?0;
????????????}
??????對using?namespace?std;的解釋:
??????所謂namespace,是指標識符的各種可見范圍。C++標準程序庫中的所有標識符都被定義于一個名為std的namespace中。
???????由于namespace的概念,使用C++標準程序庫的任何標識符時,可以有三種選擇:
????????????1、直接指定標識符。例如std::ostream而不是ostream。完整語句如下:
????????????std::cout?<<?std::hex?<<?3.4?<<?std::endl;
????????????2、使用using關鍵字。
????????????using?std::cout;
????????????using?std::endl;
????????????以上程序可以寫成
????????????cout?<<?std::hex?<<??3.4?<<?endl;
????????????3、最方便的就是使用using?namespace?std;
??????? 這樣命名空間std內(nèi)定義的所有標識符都有效(曝光)。就好像它們被聲明為全局變量一樣。那么以上語句可以如下寫:
????????????cout?<<?hex?<<?3.4?<<?endl;
?????????這段程序用到了標準模板庫,在屏幕上打印字符a~z,其中main函數(shù)的標記式只有兩種是被C++標準委員會接受的,只有以下兩種寫法是符合C++標準的,是可移植的。即:
????????????int?main()
????????????{
????????????}
????????????和
????????????int?main(int?argc,?char*?argv[])
????????????{
????????????}
???????C++在main()的末尾定義了一個隱式的return?0;?但是在VC中必須顯式的寫出return語句。
???????在BCB中可以不寫return而編譯通過。
???????這段程序中用到了STL中的容器:鏈表。先是向鏈表中插入26個字母,然后從遍歷鏈表,輸出字符。
????????我不建議初學者一開始就從模板庫入手,但是我建議應該逐漸地有意識地學習模板庫。如我們應該熟悉cout和cin的用法(位于iostream),而減少使用老式的C函數(shù)庫中printf和scanf等。
????????從控制臺入手的好處就是避免我們理解VC中向?qū)У裙ぞ呱傻钠渌a,整個程序的流程很清楚。新手學習VC的一大難點就是搞不清楚整個程序的流程(從那條語句開始執(zhí)行,然后從那條語句退出。MFC做了太多封裝,掩蓋了事實的真相,^_^)。通過控制臺我們可以很快地學習C++語言中的很多新特性。如類的封裝、繼承和多態(tài)等。通過這個時期的學習,要能夠掌握三個東西:?C++關鍵字、語法(重點是和面向?qū)ο笥嘘P的,以及模板)、C++
???????標準程序庫(知道怎么使用即可,要徹底掌握需要很多時間和精力)。至于與界面有關的東東(MFC中很大一部分是與界面相關的類,所以我認為MFC很臃腫而無聊!回頭看過以前用MFC寫的程序,有一種“垃圾”的感覺。)
???????自己做個測試:
????????寫一個控制臺程序,在其中體現(xiàn)出類的繼承,函數(shù)重載,動態(tài)多態(tài)(通過虛函數(shù)實現(xiàn)),數(shù)據(jù)封裝,C++標準庫的運用。
????????如果你能夠輕松搞定,恭喜你,你已經(jīng)通過C++語言關了。不過C++實在是一個復雜的東東,其中有各種千奇百怪的語法現(xiàn)象,如果沒有三、五年的功力,千萬不要說自己懂C++。^_^。
????????推薦書籍《Thinking?in?C++》(有精力的話,可以直接讀原版)?《Essential?C++》
??????? 本來我計劃繼續(xù)說說如何來進入C++世界的,但是琢磨了一下,覺得還是要先解決一個問題:為什么要學習C++?我覺得在軟件開發(fā)這個行當了里除了為了生計外,學習新東西都是應該以興趣為導向的。所以撇開我個人對C++的偏愛,我想為你樹立起學習C++的信心和興趣。當初我對自己學習C++的第一個忠告就是:不能半途而廢!起初是興趣驅(qū)動,后來則是生計所需,最后還是回歸到了興趣。畢竟我從中得到了樂趣,這就足夠了。在學一個新東西前,解決動機問題很重要。就如同殺人一樣,如果只是突然興起,那么等嘗試了以后,是沒有成就感的。革命先烈們?yōu)槲覀冏鞒隽撕芎玫陌駱?#xff0c;就算我們在學習C++的道路上遇到了太多困惑和痛苦,但是我們畢竟為自己的信念做了努力,我們知道自己在做什么,知道自己在追求什么。
??????C++適合做什么樣的開發(fā)?
??????C++是一門廣泛用于工業(yè)軟件研發(fā)的大型語言。具有很高的復雜性和解決問題的能力。C++不僅在開發(fā)上極具價值,同時在學術界也就有很高的價值。有關C++的文章應該可以用浩如煙海來形容了吧。C++的世界級經(jīng)典書籍也是數(shù)不勝數(shù)。然而,目前開發(fā)語言是如此地繁榮,就連微軟也在推出了新的開發(fā)語言C#。一個不可否認的現(xiàn)實是,在低階程序設計領域,C++擠壓著C同時也在承受著C的強烈反彈,前段時間看了據(jù)說是微軟操作系統(tǒng)源代碼的東東,其中很多還是C語言。而在高階程序設計領域,Java和C#正在不斷蠶食著C++的地盤。也許Java和C#的狂潮終將迫使C++回歸本位—?回到它有著根本性優(yōu)勢的開發(fā)領域:低級系統(tǒng)程序設計、高級大規(guī)模高性能應用設計、嵌入式程序設計、通用程序設計以及數(shù)值科學計算等。果真如此,我認為這未嘗不是一件好事。電力系統(tǒng)軟件所要求的高性能和大規(guī)模數(shù)值計算正是C++所擅長的。就我所接觸的南瑞和魯能,很多涉及到電力系統(tǒng)計算的軟件如PAS等,都是用C++來開發(fā)的。在電力系統(tǒng)軟件開發(fā)這塊陣地,C++大有用武之地。C++吸引如此之多的智力投入,以至于這個領域的優(yōu)秀作品,包括重量級的軟件產(chǎn)品、程序庫以及書籍等,數(shù)不勝數(shù)。在C++之父Bjarne?Stroustrup的個人主頁上,有一頁列出了一些(全部或大部分)使用C++編寫的系統(tǒng)、應用程序和庫。
????????????下面是一些例子(摘自榮耀網(wǎng)站):
????????????o?Adobe?Systems:所有主要應用程序都使用C++開發(fā)而成,比如Photoshop?&?ImageReady、Illustrator和Acrobat等。
????????????o?Maya:知道“蜘蛛人”、“指環(huán)王”的電腦特技是使用什么軟件做出來的嗎?沒錯,就是Maya。
????????????o?Amazon.com:使用C++開發(fā)大型電子商務軟件。
????????????o?Apple:部分重要“零件”采用C++編寫而成。
????????????o?AT&T:美國最大的電訊技術提供商,主要產(chǎn)品采用C++開發(fā)。
????????????o?Google:Web搜索引擎采用C++編寫。
????????????o?IBM:OS/400。
????????????o?Microsoft:以下產(chǎn)品主要采用C++(Visual?C++)編寫:
????????????o?Windows?XP?Windows?NT:NT4、2000?Windows?9x:95、98、Me?Microsoft?
????????????Office:Word、Excel、Access、PowerPoint、Outlook?Internet?Explorer,包括Outlook?Express?Visual?Studio:Visual?C++、Visual?Basic、Visual?FoxPro?.NET?Framework類庫采用C#編寫,但C#編譯器自身則使用C++編寫而成。Exchange?SQL?Server?FrontPage?Project?
????????????所有游戲......
????????????o?KDE:K?Desktop?Environment(Linux)。
????????????o?Symbian?OS:最流行的蜂窩電話OS之一。
????????????很多新手特別容易會對自己所學習的東東產(chǎn)生疑惑、迷茫。覺得自己學這個東西,花了這么多時間有沒有用,會不會過時?這種思想很普遍。在一些論壇上經(jīng)常會看到一些各語言?的優(yōu)劣比較,知道自己所學語言的優(yōu)劣也好,但是如果一味停留在這個層面就沒有用了。任何語言都只是工具而已。重要的是使用工具的人!就我個人的經(jīng)驗來講,真正處于業(yè)界搞開發(fā)的人都愿意使用成熟的、為自己所熟知的技術來完成工作。而新手都喜歡用一些比較新的技術來做開發(fā),而且喜歡追求新奇(從界面很容易看出來,花花綠綠的界面多半出自新手)。其實,安于用一些效率可能低下、擴展性和維護性差的方法來解決問題并不是開發(fā)人員的錯。他們只是在完成工作而已。但是作為一個真正有上進心的開發(fā)人員,我們應該使用更優(yōu)雅和高效的編程技術,這才是我們逐漸變成編程“大牛”的好習慣。老是停留在原地,很容易被淘汰的。在軟件開發(fā)這個行當,尤其如此。無論是對學生,還是一線開發(fā)人員,我覺得都不應該產(chǎn)生“書讀夠了”的感嘆!我有時候喜歡將以前看過的書翻出來再看,每次總能體會到一些新東西。有關C++語言的書籍更是如此,而且我覺得我所起的題目不是很好。為什么?因為我覺得學習語言還只是新手跨入軟件開發(fā)“地獄”的第一步,單單學習語言本身是遠遠不夠的,還要學習相關的程序庫(C++當然首選是先學習C++標準程序庫)、相關的平臺技術(如.NET),說得更遠一點,還要鍛煉對目標問題的分析、歸納能力等等。工作之前,技術路線自己作主,工作之后,絕大多數(shù)程序員將被公司技術路線左右。所以,趁現(xiàn)在還有時間,可以學一些自己感興趣的。如果想搞軟件開發(fā),特別是電力系統(tǒng)軟件的開發(fā),學好C++不會令我們失望。當我們進入C++的前門,然后經(jīng)過一段黑暗之路,再從后門出來到達光明頂后,我們會體味到“一覽眾山小”的感覺。
??????推薦書籍:
??????《編程高手箴言》梁肇新(用過超級解霸的都應該知道吧,^_^)寫的第一本書,其中有幾章還是值得一讀的。在這本書中,梁告訴我們,學東西要耐心,要耐得住“寂寞”,走自己的路,讓別人去“說”吧!
??????最近比較忙,原來打算緊扣主題講講一些具體的C++語言的細節(jié)的,但還是抽不出大段的時間了。所以,現(xiàn)在只能再漫談一些關于C++的故事了。
?????C++源于C語言,還記得很久以前學習C語言的時光(那是一段快樂而充實的時光),可是現(xiàn)在學習C++,并不是在C的基礎上加上了類而已,如果這樣認為,我們是耍不好C++的。因此,C++絕不是C的升級或擴充,我們應該把C++當作一門新語言來學習(C++之父Bjarne?Stroustrup語)。
??????寫程序首先希望是程序能正確執(zhí)行,其次是效率能夠被接受,再次就是易于維護。C++是一個難學易用的語言。C++提供了太多可選擇的東西,而且使用使用C++來寫程序可以有四種思考模式:基于過程、基于對象、面向?qū)ο蠛头盒汀N覀兪褂靡环N語言來寫程序,并不意味著就是使用語言本身,換句話說,我們更多的時候是使用程序庫在寫程序。比如MFC、STL、ATL、VCL等等。其中要使用C++來寫出結構優(yōu)美、性能卓越、代碼簡潔、易于維護的代碼,首推C++標準程序庫。STL對效率做了嚴格的要求,而且使用STL寫出來的程序簡潔美觀(前段時間我特意貼了一個要求對若干整數(shù)進行排序的帖子,其實目的就是用來展示STL的簡潔優(yōu)雅)。一旦習慣使用泛型思維來考慮問題,我們能夠充分體會到模板帶來的美!
??????對于數(shù)值計算來說,C++標準程序庫可以充分滿足現(xiàn)代化服務和商業(yè)計算對數(shù)據(jù)、信息的即時回應的要求。
??????我覺得學好一門語言最重要的就是實踐。也就是多“寫”!“工程經(jīng)驗之積累”對已具有一段開發(fā)時間的程序員而言,非常重要!只有在不斷的積累中,我們才能漸漸體會到C++語言中的一些背后的東西。對于這點,沒有大量程序代碼寫作經(jīng)驗的菜鳥,也可以借助《Effective?C++》先攢一些經(jīng)驗值。《Effective?C++》是一本好書!。Meyers的書絕對值得一讀,Meyers可以說當今C++社群中數(shù)一數(shù)二的技術專家。
??????推薦網(wǎng)站:
??????www.royaloo.com
????????????????????????????????????????????????????
??????以下文字應該是去年所涂鴉而成,主要是關于動態(tài)內(nèi)存分配的,在這里將其重新看了看,覺得還是寫得太淺薄了。因為內(nèi)存是程序運行的“運動場”,對場地的了解程度會直接
??????影響到我們程序運行的流暢度和穩(wěn)定性。
???????C++提供了操作符new來在堆上分配內(nèi)存,操作符delete來釋放內(nèi)存。有些情況下,我們需要對內(nèi)存的分配和釋放進行更好的控制。許多程序創(chuàng)建和釋放一些重要類的大量的對象,如tree?nodes,linked?lists?links,points,lines,messages,etc.使用通用的內(nèi)存分配器如new和delete來進行這些對象的分配和釋放有時將支配程序的運行時間和內(nèi)存需求。兩方面的因素:通用內(nèi)存分配操作的運行和空間的耗費以及不同對象大小引起的內(nèi)存碎片。類使用定制的內(nèi)存分配器將加快模擬器、編譯器和類似程序的執(zhí)行速度。
????????例外一種需要更好的內(nèi)存控制的情況是:需要在有限資源的情況下長時間不間斷運行的程序。實時系統(tǒng)經(jīng)常需要用最少的耗費來獲取有保證的可預期的內(nèi)存。這也就導致了更好的內(nèi)存控制的需要。一般來說,這些程序都避免使用動態(tài)的內(nèi)存分配,而使用特殊目的的內(nèi)存分配器來管理有限資源。
????????此外,還有一些情況下由于硬件或系統(tǒng)的要求,需要將對象放在指定的內(nèi)存位置。這也需要進行定制的內(nèi)存管理(通過重載new來加以實現(xiàn))。
????????在C++?Release?2.0中,為了滿足以上需求,內(nèi)存管理機制做了相應的修改。主要是引進了operator?new?[]?和?operator?delete?[]。
????????new操作符的作用范圍(Scope?for?operator?new?Functions)
???????????????操作符(Operator)?????????范圍(Scope)?
???????????????::operator?new???????????Global?
???????????????class-name::operator?new?Class?
???????operator?new的第一個參數(shù)必須是類型size_t(在STDDEF.H中定義的類型),返回類型為void?*。當分配內(nèi)建(built-in)類型的對象、未包含用戶自定義的new操作符函數(shù)的類對象、任何類型的數(shù)組時,使用全局new操作符函數(shù)。當在類中自定義new操作符時,分配該類對象的內(nèi)存時,調(diào)用該類的new操作符。如下:
????????????#include?
????????????#include?
????????????class?Blanks
????????????{
????????????public:
????????????Blanks(){}
????????????void?*operator?new(?size_t?stAllocateBlock,?char?chInit?);
????????????};
????????????void?*Blanks::operator?new(?size_t?stAllocateBlock,?char?chInit?)
????????????{
????????????void?*pvTemp?=?malloc(?stAllocateBlock?);
????????????if(?pvTemp?!=?0?)
????????????memset(?pvTemp,?chInit,?stAllocateBlock?);
????????????return?pvTemp;
????????????}
????????????int?main()
????????????{
????????????Blanks?*a5?=?new(?0xa5?)?Blanks;//創(chuàng)建對象Blanks,并且初試化為0xa5
????????????return?a5?!=?0;
????????????}
???????new操作符可以重載,而delete卻不行。因為等到需要釋放的時候,我們所能得到的就是一個指針。而且該指針可能不是原先的對象類型指針(有可能進行了類型轉(zhuǎn)換)。實際上,當使用new獲得一個指向一片內(nèi)存的指針時,在該片內(nèi)存前有一個指示器(indicator),記錄實際分配的內(nèi)存數(shù)量。當調(diào)用delete時,可以獲知需要釋放的內(nèi)存大小。
???? 數(shù)組的釋放(Deallocating?Arrays):
????????????void?f(?)
????????????{
????????????X*?p1?=?new?X[10];
????????????//...
????????????delete?[]?X;
????????????}
??????為什么不使用delete?[10]?X;來釋放內(nèi)存?Bjarne?Stroustrup稱這種做法容易導致錯誤,而將記錄元素個數(shù)的任務放在delete的實現(xiàn)中了。至于為什么C++中未內(nèi)建垃圾收集器(Garbage?Collection)的原因,看《C++語言的設計和演化》(En)?Bjarne?Stroustrup?機械工業(yè)出版社(俗稱:D&E)可以得到答案。
??????此外,C++標準庫中提供了一種智能型指針auto_ptr,這種指針可以幫助我們防止“被異常拋出時發(fā)生資源泄漏”。但是缺點是該智能型指針不能指向數(shù)組,因為其內(nèi)部釋放內(nèi)存是通過delete而非delete?[]?來進行的。所以,只能使用其來指向一個單個對象。
??????模板部分是C++中比較難的部分,也是C++的魅力所在。以下文字是我以前看過的,具?體出處不清楚了。今天稍微整理了一下,作為模板介紹的一個單元。
???????為什么要使用模板
???????對于除類型之外,其余都相同的函數(shù)(譬如quicksort),我們一般有3種解決辦法。
????????????1、針對每個不同的類型重復地編寫函數(shù)實體(C語言的做法):
????????????int*?quicksort(int?a[])?{...?}
????????????double*?quicksort(double?a[])?{...?}
????????????…
????????????2、使用Object(Java的做法)或者void*
????????????缺點有兩個
????????????效率問題方面也有問題
????????????類型檢查問題
????????????3、使用宏預處理機制
????????????缺點:只是愚蠢的文本替換,而且也不會考慮作用域和類型安全。
????????????然而,應用模板卻可以避免這些缺點,我們可以編寫:
????????????template
????????????T*?quicksort(T?a[])?{...?}
????????????優(yōu)點:
????????????代碼簡潔優(yōu)雅,所有參數(shù)類型都以T來代替,真正實現(xiàn)了類型無關性。
????????????更好的類型安全性,所有的類型檢查都是在編譯期進行,而且避免使
????????????用指針。
????????????不存在繼承,效率高。(1)沒有虛函數(shù);(2)所有的一切工作都是
????????????在編譯期完成,大大提高運行效率。
????????????目的:告訴編譯器如何做出最佳的選擇,而且這種選擇
????????????全部是在編譯期完成的。
????????????模板的機制:特化?和?實參演繹
????????????1、特化
????????????基本模板:
????????????template
????????????class?A?{?//?(1)
????????????void?f(T1?a,?T2?b);
????????????}
????????????局部特化(偏特化):
????????????template?class?A?{?//?(2)
????????????void?f(int?a,?T2?b);
????????????}
????????????或者
????????????template>?class?A?{?//?(3)
????????????void?f(T?a,?T?b);
????????????}
????????????全局特化(顯式特化):
????????????template<>
????????????class?A?{
????????????void?f(int?a,?int?b);?//?(4)
????????????}
????????????使用示例:
????????????A*?p1;?//將使用(4)?——全局特化
????????????A*?p2;?//將使用(3)?——局部特化
????????????A*?p3;?//將使用(2)?——局部特化
????????????A*?p4;?//將由(1)?——基本模板——生成
????????????//A
???????優(yōu)點:
???????由:全局特化->局部特化->基本模板,這種特化順序的選擇與匹配(重載解析規(guī)則)是由編譯器自動進行的,無需人工參與。可以根據(jù)不同的情況(諸如類型不同,條件不同),給出不同的實現(xiàn),從而獲得更加靈活的針對性。
????????可以針對任何變化,改善了程序的擴展性。
????????2?實參演繹
????????????T?const&?f(T?const&?a,?T?const&?b)
????????????{
????????????return?a?+?b;?//1處
????????????}
????????????int?g?=?f(1,2);
????????實際上f(1,2)要匹配的函數(shù)是int?const&?f(int?const&,int?const&);
????????而這個函數(shù)又是怎么來的呢?
????????優(yōu)點:
????????再也無需提供一對尖括號和里面的實參,諸如f(1,2),有了實參演繹,我們就可以寫成f(1,2)。
????????????模板的應用
????????????1、標準庫(STL)——到處都是模板代碼
????????????標準庫=算法+容器+迭代器
????????????如list?/
????????????2、類型無關性(T)
????????????3、trait和policy
????????????(1)trait:?主要用到了許多typedef和特化,指定的是一種特性。
????????????//?traits/accumtraits3.hpp
????????????template
????????????lass?AccumulationTraits;
????????????c?template<>
????????????class?AccumulationTraits?{
????????????public:
????????????typedef?int?AccT;
????????????static?AccT?const?zero?=?0;
????????????};
????????????template<>
????????????class?AccumulationTraits?{
????????????public:
????????????typedef?int?AccT;
????????????static?AccT?const?zero?=?0;
????????????};
????????????template<>
????????????class?AccumulationTraits?{
????????????public:
????????????typedef?long?AccT;
????????????static?AccT?const?zero?=?0;
????????????};
????????????(2)policy:通常表現(xiàn)為某個函數(shù),指定的是一種行為
????????????class?SumPolicy?{
????????????public:
????????????template
????????????static?void?accumulate?(T1&?total,?T2?const?&?value)?{
????????????total?+=?value;
????????????}
????????????};
????????????(3)trait和policy的用法:
????????????template??>
????????????class?Accum?{
????????????public:
????????????typedef?typename?Traits::AccT?AccT;
????????????static?AccT?accum?(T?const*?beg,?T?const*?end)?{
????????????AccT?total?=?Traits::zero();
????????????while?(beg?!=?end)?{
????????????Policy::accumulate(total,?*beg);
????????????++beg;
????????????}
????????????return?total;
????????????}
????????????};
????????????4、Metaprogramming
????????????編譯期計算、遞歸的思想
????????????5、新形式的設計模板
????????????(第三、第四、第五點以后再詳細介紹)
??????《C++?Templates中文版》的具體介紹
???????第1部分介紹了模板的基本概念,以教程的風格來介紹這些基本概念。
???????第2部分闡述了模板的語言細節(jié),可以作為一本基于模板的構造的參考手冊。
???????第3部分介紹了C++模板所支持的基本設計技術,范圍覆蓋從微小的概念一直延伸到復雜的用法;一些技術在別的書籍都沒有出現(xiàn)過。
???????第4部分基于前兩部分,深入討論了各種使用模板的普通應用程序。
???????????????????????????????????????????????????
???????發(fā)信人:?robindy?(丁丁),?信區(qū):?EES
???????標??題:?Re:?vc要學多久呀?那位大哥給個說法?Thank?you!
???????發(fā)信站:?水上明珠?(Sat?Jun?12?19:19:31?2004)
???????學一個月,可以用VC寫一些小程序自己玩玩
???????學兩個月,可以用VC寫像樣點的東西在周圍人面前炫炫
???????學三個月,可以用VC給老板開始干活了
???????學六個月,開始重頭去學C++
???????學一年后,決定要不要繼續(xù),if(繼續(xù))?學習MFC、ATL、STL、C#、BCB、Network、Database、Algorithm...?else??開始就是個錯誤
???????學三年后,學會怎么來用編程語言來解決問題,VC、BCB等都只是解決問題的工具。這時候你如果還在學C++,你可以從事軟件開發(fā)這個很有“前途”的職業(yè)了。
總結
- 上一篇: 重磅!花书《深度学习》,这份精炼笔记可能
- 下一篇: 大学生想依靠c/c++找工作,还需要什么