第一篇:C++學(xué)習(xí)心得
關(guān)于VC的學(xué)習(xí)心得
關(guān)于C++這門課,其實(shí)我自己在大一時(shí)就接觸過,那時(shí)候接觸的就是單純的一些C++的基本語法規(guī)則,基本的編程規(guī)則,這學(xué)期老師又在課堂上將這些基礎(chǔ)知識(shí)復(fù)習(xí)了一下,但是我們都有這樣的困惑:課堂和教材的 內(nèi)容基本上都能接受和理解,但真要實(shí)際動(dòng)手編寫程序又感到腦袋一片空白而無從下手;其二,整個(gè)課程的所有內(nèi)容好不容易學(xué)完了,但對(duì)編寫實(shí)用化的程序,總感到眼花繚亂而無法下手,真?zhèn)€兒“欲起平之恨無力”。以至于在很長(zhǎng)一段時(shí)間里在我的內(nèi)心里產(chǎn)生了一種學(xué)習(xí)C語言和C++的恐懼感,認(rèn)為自己不是學(xué)C語言和C++的料,將來打死我也不會(huì)朝C語言和C++的方向發(fā)展。
俗話說:萬丈高樓起平地!C++雖然是與C語言的編程思想有著截然不同的套路,但是作為C語言的擴(kuò)充,他的基礎(chǔ)部分還是在C語言。所以課下我又將C語言的基礎(chǔ)部分知識(shí)自己熟悉了一遍,并將其與C++中的語法規(guī)則關(guān)鍵字的用法比較了一番,從最小的部分對(duì)兩門語言進(jìn)行了深入的學(xué)習(xí)。
本以為學(xué)習(xí)到這里我的C++深入學(xué)習(xí)之路已經(jīng)完成了一大半,自己再學(xué)習(xí)一些算法什么的就可以結(jié)業(yè),用這門語言去找一門好的工作了,但是我發(fā)現(xiàn)自己還是太天真了,就是掌握一些數(shù)據(jù)結(jié)構(gòu)的算法就想去搞軟件開發(fā)工作確實(shí)太天真了,下面想說的是這學(xué)期的學(xué)習(xí)重點(diǎn)了--面向?qū)ο竦目梢暬删幊滔到y(tǒng)。
于是我們就這樣稀里糊涂的接受了MFC的編譯開發(fā),本以為這種開發(fā)也就是一些簡(jiǎn)單的C++,程序的編寫,深入了解后發(fā)現(xiàn)這兩者的差別其實(shí)很大的。記得書上說過,Visual C++ 不僅僅是一個(gè)編譯器。它是一個(gè)全面的 應(yīng)用程序開發(fā)環(huán)境,使用它你充分利用具有面向?qū)ο筇?性的 C++ 來開發(fā)出專業(yè)級(jí)的 Windows 應(yīng)用程序。為了 能充分利用這些特性,你必須理解 C++ 程序設(shè)計(jì)語言。掌握了C++,你就必須掌握 Microsoft 基本類庫(MFC)的層次結(jié)構(gòu)。該層次 結(jié)構(gòu)包容了 Windows API 中的用戶界面部分,并使你能夠很容易地以面向?qū)ο蟮?方式建立 Windows 應(yīng)用程序。這種層次結(jié)構(gòu)適用于所 有版本的 Windows 并彼此兼容。你用 MFC 所建立的代 碼是完全可移植的,這樣就大大加快了開發(fā)的效率問題。
首先,你要 決定什么樣的用戶能使用該程序并根據(jù)需要來設(shè)置 相應(yīng)的用戶界面對(duì)象。Windows 用戶界面有一些標(biāo) 準(zhǔn)的控制,如按鈕、菜單、滾動(dòng)條和列表等,這對(duì) 那些 Windows 用戶已經(jīng)是很熟悉了。要記住的是,作為程序員必須選擇一組控制并決定如何把它們 安排到屏幕上。傳統(tǒng)上,你需要在紙上做一下用戶 界面的草圖,直到對(duì)各元素感到滿意為止。這對(duì)于 一些比較小的項(xiàng)目,以及一些大項(xiàng)目的早期原型階 段是可以的。
下一步,是要實(shí)現(xiàn)代碼。為任何 Windows平臺(tái)建立應(yīng)用程序時(shí),我們選擇的是 C++。使用 C++,程序員是在 Windows 應(yīng)用程 序界面(API)的水平上編寫代碼。該界面是由 多個(gè) C ++函數(shù)所組成,Microsoft 也提供了基本類庫(MFC),該庫的主要優(yōu)點(diǎn)是效率高。它減少了大量在建立 Windows 程序 時(shí)必須編寫的代碼。同時(shí)它還提供了所有一般 C++ 編程的優(yōu)點(diǎn),例如繼承和封裝。使得MFC 是可移植的。后續(xù)的開發(fā)也就是基于這些庫的基礎(chǔ)上來實(shí)現(xiàn)一些軟件的功能特點(diǎn)的。
在學(xué)習(xí)方法上覺得,在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象具有狀態(tài)(屬性)和行為,狀態(tài)保存在成員變量中,行為通過成員方法(函數(shù))來實(shí)現(xiàn)。C語言中的結(jié)構(gòu)體只能描述一個(gè)對(duì)象的狀態(tài),不能描述一個(gè)對(duì)象的行為。在C++語言學(xué)習(xí)中,對(duì)結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C++的結(jié)構(gòu)體可以包含函數(shù)。
學(xué)習(xí)語言是需要技巧的,無論是哪種語言,里面都是有規(guī)律的。對(duì)于計(jì)算機(jī)語言來說,我認(rèn)為應(yīng)該先理解,然后上機(jī)去實(shí)現(xiàn)它,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。代碼量的積累對(duì)于一個(gè)程序員來說太重要了,這也是區(qū)分程序員之間水平的一個(gè)標(biāo)準(zhǔn),這就像我們小學(xué)剛開始學(xué)習(xí)英語一樣,每個(gè)人都是從26個(gè)字母開始學(xué)的,C++也是一樣,先從簡(jiǎn)單的代碼塊開始記憶,反復(fù)記憶,每周進(jìn)行周期性的階段復(fù)習(xí),每天要求自己敲500行代碼,找到敲代碼的感覺,這個(gè)感覺很重要,一旦養(yǎng)成每天敲代碼的習(xí)慣,我想這就是走向成功的開始。
嘗試看一些小程序的代碼,主要看編程者的思路、整理流程、框架格式、用到哪些函數(shù)?哪些變量?一點(diǎn)一點(diǎn)去剖析。溝通是一個(gè)必不可少的環(huán)節(jié),任何一個(gè)項(xiàng)目的完成都是離不開團(tuán)隊(duì)合作的,學(xué)習(xí)也是一樣,閉門修煉,只會(huì)造成思維定視,經(jīng)常跟學(xué)的比自己好的同學(xué)進(jìn)行溝通,這是有效的提高自己水平的一種途徑,有時(shí)會(huì)發(fā)現(xiàn)自己找到世外桃園,那真是豁然開朗。
對(duì)于學(xué)習(xí),主要還是要自己努力,老師已經(jīng)教的很仔細(xì)了,但是學(xué)習(xí)的主動(dòng)權(quán)在我們手中。我們要對(duì)這門語言要有興趣。可能會(huì)有很多不知道,不理解的地方,當(dāng)時(shí)我們應(yīng)該多思考,借助一些書籍及網(wǎng)絡(luò)的條件,進(jìn)一步理解和體會(huì)。把自己學(xué)習(xí)的東西融會(huì)貫通就好了,主要還是在于對(duì)于課本的理解,主要還是自己領(lǐng)悟。
每個(gè)人都有每個(gè)人的學(xué)習(xí)習(xí)慣和方式,但是每個(gè)人的時(shí)間都是一樣的,這就看每個(gè)人的學(xué)習(xí)效率和學(xué)習(xí)方法如何了,找到一條適合自己的學(xué)習(xí)方法和技巧才是真的好方法!好技巧!
第二篇:c++學(xué)習(xí)心得
c++學(xué)習(xí)心得
2008-03-12 16:24
為初學(xué)者指路
首先聲明,我可不是什么高手,也就是剛脫貧。因?yàn)檫\(yùn)氣很好,買到了幾本好書,在學(xué)習(xí)過程中幾乎沒走什么彎路,沒費(fèi)什么勁就入門了,現(xiàn)在一般的小程序能搞定了??吹侥切┮?yàn)椴恢獜暮蜗率侄嗫鄴暝呐笥眩M业奈恼履芙o他們一些幫助。
學(xué)編程急不得,上來就學(xué)VC肯定碰一頭灰,說VC難就難在這點(diǎn)上了。如果硬上,意志堅(jiān)強(qiáng)的話也許能挺過來,但也是會(huì)缺乏后勁,不得不回過頭來補(bǔ)習(xí)基礎(chǔ)知識(shí)。意志不堅(jiān)強(qiáng)的話,很有可能就此放棄了,并留下一個(gè)VC難得不得了的印象。其實(shí),只要踏踏實(shí)實(shí)一步一步來,VC也就是很簡(jiǎn)單點(diǎn)事。在這里我說一下,如果你還只是一個(gè)初中生,那么你就應(yīng)當(dāng)仔細(xì)考慮一下了。首先,限于你的知識(shí)和思維能力,學(xué)學(xué)C語言還應(yīng)該沒問題,但要學(xué)VC是要下相當(dāng)大的功夫的。而且,你現(xiàn)在學(xué)到的東西將來一定會(huì)過時(shí),所以不如把精力放在算法的研究上,畢竟這些東西永遠(yuǎn)都不會(huì)過時(shí)。
我覺著如果走對(duì)路子,入門VC,一個(gè)暑假應(yīng)該夠用了。
雖說學(xué)VC并不是傳說的那么難,可不下些苦功夫是學(xué)不成的。在學(xué)VC前,你必須確定,你是因?yàn)闊釔劬幊滩艑W(xué)VC的,而不是出于炫耀或其他。否則,恐怕你堅(jiān)持不到勝利的那一天。
對(duì)于首次接觸編程的同學(xué),我建議最好先學(xué)一下Quick BASIC(DOS里就有帶,就是那個(gè)QBASIC.EXE),不用多學(xué),知道什么是整型什么是浮點(diǎn),以及DO...LOOP FOR...NEXT 等最基本的知識(shí),能算個(gè)階乘,求個(gè)積分就行了,關(guān)鍵要明白計(jì)算機(jī)是怎么執(zhí)行命令的,對(duì)編程有個(gè)感性認(rèn)識(shí)。如果你對(duì)自己有自信,也可以直接學(xué)C++,應(yīng)該也不會(huì)多費(fèi)太多事。不過我覺著因?yàn)橛泻芏噘Y料是FOR VB的,并且網(wǎng)頁編程常用VB Script,以后你也很有可能要用到VB,所以了解一些BASIC對(duì)以后也是有幫助的。而且如果只是要算個(gè)小題用QB比VC、VB之類方便多了。(找個(gè)人教一兩天應(yīng)該就能搞定了吧)
之后我建議找本初高中信息學(xué)奧賽的書(有些奇怪吧)。這些書里講解了基本的算法,寫的卻比較通俗,沒什么高深的數(shù)學(xué)知識(shí),容易理解。這些東西在數(shù)據(jù)結(jié)構(gòu)課程中有系統(tǒng)嚴(yán)密的講解,所以也可等以后再學(xué)。但我覺著現(xiàn)階段寫一些小程序,實(shí)現(xiàn)些常用算法對(duì)自己的思維是很好的鍛煉,對(duì)以后的學(xué)習(xí)大有好處。我想,能排排序,求個(gè)八皇后,算個(gè)漢諾塔,再知道深、廣度優(yōu)先搜索就可以了。
如果你已經(jīng)有一些編程的基礎(chǔ)知識(shí)了,自然就可以跳過以上兩步。
等你對(duì)編程有一定的認(rèn)識(shí)后,就應(yīng)該開始進(jìn)軍C++了.注意,是C++而不是VC,這兩者根本不是一碼事!別買VC入門,你肯定看不懂!C++是一門語言,而VC教程則是講解如何使用MFC類庫,學(xué)習(xí)VC應(yīng)建立在充分了解C++的基礎(chǔ)上。
我覺著比起許多花花綠綠的大全、寶典,不如買本大學(xué)的C++教程(注意:別買等級(jí)考試的教程,那是應(yīng)試用的),那些教程大都經(jīng)過反復(fù)錘煉,比較系統(tǒng),很有含金量,有不會(huì)太貴。這里我暴力推薦由清華大學(xué)出版社出版的一本《C++程序設(shè)計(jì)教程》,封面是紅色的,封底是黃色的,看起來很樸素,主編是錢能。這本書簡(jiǎn)直是好的沒法說,還便宜(39.5元)。這本書不但告訴你語法,還告訴你為什么要這樣規(guī)定語法,看完之后,你會(huì)覺著那許許多多的規(guī)定是理所當(dāng)然的,根本不用費(fèi)心記,不但不枯燥,反而會(huì)使有一種美感。書中還有許多實(shí)際編程時(shí)應(yīng)注意的問題,很有價(jià)值。這本書還配有《實(shí)驗(yàn)指導(dǎo)》,和《習(xí)題集》,不過對(duì)于有一定編程經(jīng)驗(yàn)的人應(yīng)該是用處不大,所以我沒買。除了這本書,我建議再買本關(guān)于傳統(tǒng)C語言的書,要著重以下幾個(gè)方面:編譯預(yù)處理、typedef的使用,位運(yùn)算,標(biāo)準(zhǔn)庫函數(shù)的使用(最好有一個(gè)比較詳細(xì)的列表,用的時(shí)候好查)。
C++的標(biāo)準(zhǔn)類模板是個(gè)不錯(cuò)的東東,不過對(duì)于學(xué)習(xí)MFC卻沒有幫助,原因是MFC太落后了(^_^),可以先放一放,要不要學(xué)等搞定MFC時(shí)再作決定。雖然我沒怎么學(xué)過,不過覺著它挺不錯(cuò),而且代表了一種發(fā)展方向。雖然學(xué)著費(fèi)勁(那東西幾乎沒一點(diǎn)C++的樣子,簡(jiǎn)直是在學(xué)新語言),但掌握它可使編程輕松不少。
學(xué)完了C++,該學(xué)VC了吧?別急,先找本W(wǎng)IN32編程的書,這次沒什么講究,看著差不多的,便宜一些的就行了,如果有對(duì)于VC集成環(huán)境的介紹就最好了。WIN32編程是指用WINDOWS API編程,MFC是將眾多的API函數(shù)進(jìn)行了封裝的類庫,用起來方便了不少,但如果沒有一些API編程基礎(chǔ),對(duì)相關(guān)概念不了解,學(xué)起MFC來可能會(huì)很費(fèi)解。相信我,將來你不會(huì)覺著學(xué)API編程是浪費(fèi)時(shí)間的。API函數(shù)有兩千多,要都學(xué)會(huì)累死。其實(shí)你只要知道如何創(chuàng)建窗口、對(duì)話框、控件、消息循環(huán),了解了句柄的含義就差不多了,最好再了解一點(diǎn)GDI編程。這個(gè)階段的關(guān)鍵是要理解WIN32程序是如何運(yùn)作的,把握各種窗口間的關(guān)系。因?yàn)槟阋院髴?yīng)該很少直接用WIN32 SDK編寫程序,所以關(guān)鍵是理解整體結(jié)構(gòu),記住幾個(gè)函數(shù)并沒有什么意義。函數(shù)用的時(shí)候可以現(xiàn)查。手頭應(yīng)有一份比較全面的資料。中文的API函數(shù)大全好像只有For VB的,不過看起來應(yīng)該是沒有任何障礙。英文的資料MSDN中就有,相當(dāng)全面,也比中文的詳細(xì)一些。我建議用中文資料快速查找,有問題再看英文。(我忘了我的html版中文API大全是從哪下載的了,不過書店有售,白皮的,很厚一本,很貴就是了。誰想要可以與我聯(lián)系iamsor@sohu.com)
對(duì)于想學(xué)游戲編程的朋友注意:從現(xiàn)在起,你不必去學(xué)什么MFC了,相信我,那東西除了讓你頭疼一點(diǎn)用處都沒有。游戲都使用Win32 SDK編出來的?,F(xiàn)在,你要學(xué)的是DirectX。我推薦老王翻譯的DirectDraw文檔(),前面有一些老王自己寫的基礎(chǔ)知識(shí),很適合入門,在此特別感謝老王的辛勤勞動(dòng)。我還買了一本《DirectX 7 速成教程》,機(jī)械工業(yè)出版社出版,封面封底都是紅色。除了翻譯慘了點(diǎn)還算不錯(cuò),介紹的挺全面,還有一些游戲編程基礎(chǔ)知識(shí)。如果你想圖省事,可以考慮用云風(fēng)編寫的風(fēng)魂游戲庫,很方便的(對(duì)云風(fēng)的辛勤勞動(dòng)表示感謝).不過我仍然建議至少了解一下DirectX.這里說一下,很多朋友抱怨找不到有關(guān)DirectX的書籍,我告訴你,別去編程書籍里找,去多媒體制作書籍那找,還要把眼睛瞪得大大的、圓圓的。Director..Director..DirectX!!知道了吧,書店工作的人眼神都不大好,我也是有一天沒事瞎轉(zhuǎn)才發(fā)現(xiàn)的,嚇了我一大跳。發(fā)現(xiàn)這個(gè)秘密后我發(fā)現(xiàn)其實(shí)有不
少關(guān)于DirectX的書,只是一般人找不到罷了。學(xué)會(huì)了DirectX,就可以開始奮斗了,剩下的問題就只有積累經(jīng)驗(yàn)了。
對(duì)于志向是應(yīng)用軟件的朋友,打好了基礎(chǔ),現(xiàn)在進(jìn)軍VC的障礙都已掃清了。不過還是應(yīng)做好充分的思想準(zhǔn)備,事情不會(huì)那么順利的。剛開始,你就要面對(duì)一個(gè)瓶頸,大量的緊密關(guān)聯(lián)的知識(shí),使你必須一下理解一個(gè)整體,而很難一點(diǎn)點(diǎn)來。可以說,學(xué)VC最難的就是剛開始。情況有些類似于你第一次創(chuàng)建窗口時(shí)面對(duì)的那長(zhǎng)長(zhǎng)的程序,只不過更糟糕就是了。很多人就是在此被一大團(tuán)知識(shí)噎著,放棄了學(xué)習(xí)。事實(shí)上,這幾乎是Windows編程的一大特點(diǎn),在WIN32編程時(shí)你就應(yīng)當(dāng)有所體會(huì),而DirectX和COM都有類似問題。記住,一定要堅(jiān)信:突破了這個(gè)瓶頸之后便是一片海闊天空,而有著扎實(shí)基礎(chǔ)的你是一定能闖過去的。
我的建議是,不要等徹底弄明白一句才看下一句,而是知道好像怎么回事就向下看,實(shí)在看不懂也硬著頭皮往下看,等能比貓畫虎的作出個(gè)菜單、對(duì)話框時(shí)便回過頭再看一遍,幾遍之后應(yīng)該就可以大概明白MFC程序的運(yùn)作了。注意:這里有個(gè)關(guān)鍵,一定要用心體會(huì)面向?qū)ο缶幊痰木?,努力將眼前的程序與你之前所學(xué)的知識(shí)聯(lián)系起來。通過比較成員函數(shù)和對(duì)應(yīng)的API函數(shù)間的區(qū)別,嘗試去理解MFC是怎樣封裝相關(guān)的API的。例如,相當(dāng)多的類將句柄封裝了起來,在傳遞參數(shù)時(shí)加以省略,這就是一個(gè)很重要的特性。MFC中有許多的宏,看起來很奇怪,但你不必理會(huì)其實(shí)現(xiàn)方法,只要知道如何使用便可,這點(diǎn)也很重要。還有,千萬不要過于依賴ClassWizard,對(duì)于其生成的代碼要自己進(jìn)行分析,偷懶就不能真正理解MFC。
這里我介紹一種學(xué)法,不過學(xué)法這種東西因人而異,所以還要根據(jù)個(gè)人的情況決定。開始時(shí),教程讓怎么辦就怎么辦,比貓畫虎的作出個(gè)菜單、對(duì)話框,然后試著添加控件。等能不看教程便做到這些時(shí),開始逐字逐句的試著理解MFC程序的組織。若看不懂就跳過看下面的。就這樣一遍一遍來。如果覺著頭大就先歇上兩天,等清醒了再接著來.最好在這期間多找些介紹MFC框架的文章。注意:先不要碰有關(guān)文檔/視結(jié)構(gòu)的東西,否則你會(huì)更頭大。然后便可試著寫個(gè)定時(shí)器、名片夾之類的小東西,熟悉一下各種控件的使用。突破了開始的瓶頸之后再學(xué)下去便會(huì)越學(xué)越容易,因?yàn)槟憧梢砸稽c(diǎn)一點(diǎn)的積累知識(shí),而不用擔(dān)心被噎著了。再過不久,你就不得不開始使用API函數(shù)完成一些功能,如在系統(tǒng)托盤加圖標(biāo),自畫列表框等。這時(shí),你也會(huì)體會(huì)到學(xué)習(xí)WIN32編程的好處了,沒學(xué)過的人很可能就此卡殼。
關(guān)于VC的教程遍地都是,但魚龍混雜,市場(chǎng)烏煙瘴氣,騙錢的書真不少。有些書很厚,內(nèi)容當(dāng)然也很全,對(duì)老鳥很不錯(cuò),但對(duì)于初學(xué)者似乎有些浪費(fèi)錢,因?yàn)槔锩娼^大部分的東西MSDN中都有,并且初學(xué)者用不著。老外寫的書一般內(nèi)容不錯(cuò),但翻譯水平是個(gè)問題。如果翻譯糟糕可夠你受的,加上價(jià)格不菲,我也不建議初學(xué)者買。還有些什么傻瓜書、圖解之類,好像是面向初學(xué)者,時(shí)則為騙錢,你看完后除了那幾個(gè)例子什么也不會(huì)作。如果你看到有一本書花了大量的篇幅圖文并茂,生動(dòng)形象的介紹如何畫圖,輸出文字,別買!騙錢的?。?-< 我就被坑去42塊現(xiàn)大洋)那些花哨的東西對(duì)初學(xué)者除了轉(zhuǎn)移注意力沒任何好處。如果你真的對(duì)GDI繪圖很感興趣,就去找些專門書籍,比那些書好多了。最好買名字類似于VC應(yīng)用,VC編程之類比較正式的,圖不要太多的,字不要太大的,最好是
有較多的控件介紹的。當(dāng)然,文字流暢也是很重要的。書不要買太多,最多兩本,因?yàn)檫@些書內(nèi)容都差不多,買多了的話東看西看反倒沒好處。在這里,我建議初學(xué)者先別急著掏錢,而是去VC王朝(http://vcdynasty.yeah.net/)下載本MFC教程。雖說是網(wǎng)上教程,卻當(dāng)相當(dāng)有水準(zhǔn)。不但內(nèi)容比較全面,還一句廢話也沒有(這里感謝作者的辛勤勞動(dòng))。只是可惜對(duì)GDI沒有一點(diǎn)介紹,還須其他書籍作補(bǔ)充。等搞定這本教程時(shí),應(yīng)該就已經(jīng)入了門,可以有針對(duì)性的選購書籍,不用擔(dān)心上當(dāng)受騙了。還有,VC知識(shí)庫()的網(wǎng)上雜志也很不錯(cuò),對(duì)剛?cè)腴T的人很有幫助,建議下載。入了些門后,各個(gè)網(wǎng)站多轉(zhuǎn)轉(zhuǎn),看見好文章就往下拉,對(duì)提高水平很有好處。
一套MSDN光盤在這時(shí)是必不可少的,什么都找中文資料是不可能的,即使能找到也會(huì)很費(fèi)時(shí)間和金錢,只能看硬著頭皮英文。不過以我的經(jīng)驗(yàn)看,只要有高中水平的英語,加上金山詞霸一路滑過去,看那種專業(yè)文章還是很容易的。還有,初學(xué)者一上來可能根本不知道上哪找需要的東西,我在這里把常用的地方列一下:
WIN32 API:平臺(tái)SDK->Reference->Win32 Functions in Alpha Order
MFC類庫資料: Visual C++ Documentation->Reference->Microsoft Fo...C/C++語言及標(biāo)準(zhǔn)庫資料: Visual C++ Documentation->Reference->C/C++...標(biāo)準(zhǔn)控件: 標(biāo)準(zhǔn)控件都被MFC封裝了,可以參考對(duì)應(yīng)的類,如Edit控件對(duì)應(yīng)CEdit類.VC中帶的ActiveX控件: Visual Basic文檔->參考->控件參考(唯一的中文資料,卻是最糟糕的。不但是For VB,與C++有很大區(qū)別,還翻譯得亂七八糟,幾乎沒法用.如有高手知道哪有英文資料還請(qǐng)告知,不勝感激)
目前市面上的MSDN光盤已經(jīng)有一段歷史了,有些東西可能有些過時(shí)。要最新資料的話,可以到微軟的網(wǎng)站(當(dāng)然是全英文的)。不過對(duì)于初學(xué)者似乎沒有必要。
搞定VC后,要學(xué)什么都隨你便了,再學(xué)C++Builder,VB,Dephi,java什么的都是一點(diǎn)難度都沒有了,感覺就象是把關(guān)鍵字換了換。或者可以去啃啃COM,據(jù)說那是塊硬骨頭(不過好像也只是入門難,因?yàn)橛辛酥暗慕?jīng)驗(yàn),雖然我沒碰過,但花點(diǎn)時(shí)間應(yīng)該是搞得定的。另外DirectX編程經(jīng)驗(yàn)在此應(yīng)該是有些幫助的)。
最后,我建議有時(shí)間的話多研究一下各種算法。數(shù)據(jù)結(jié)構(gòu)是一定要看的。不一定要記?。ㄔ捳f回來,不經(jīng)常用的話也記不?。?,但至少要知道有那么回事,萬一碰到問題了要知道往那邊*。其實(shí),常見的鏈表等結(jié)構(gòu)以及排序等算法在C++標(biāo)準(zhǔn)類模板中已經(jīng)實(shí)現(xiàn)了,不用你去費(fèi)勁,但有些了解的總是有好處的。至于離散數(shù)學(xué)、線性代數(shù)什么的,對(duì)于復(fù)雜些的算法是必需的,其中離散數(shù)學(xué)是數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)。不過,我倒覺著只要不是太復(fù)雜的問題只用經(jīng)驗(yàn)也能解決(就象奧賽書中那樣,只是實(shí)現(xiàn)而沒有證明),而且那些東西不用就會(huì)忘。萬一碰見個(gè)難題解決不了,找個(gè)高手幫忙也不錯(cuò),省時(shí)省力^_^。
下面是我想到的一些雜七雜八的問題,沒什么條理,湊或看吧:
英語水平不用很高,但至少要有高中水準(zhǔn),否則有你受的。
看書一遍看不懂沒關(guān)系,事實(shí)上,要一遍就能弄懂你就很有天分了。只要多看幾遍,綜合分析,應(yīng)該是沒有什么問題的。
現(xiàn)在的世道,不是書到用時(shí)方恨少,而是書到用時(shí)方能學(xué)。不要試圖滿把抓,而要用到什么學(xué)什么。這樣,學(xué)的又快,記的又牢。
一個(gè)錯(cuò)誤認(rèn)識(shí)-學(xué)編程*的是記憶:這是很要命的思想,會(huì)讓你累死而無所得。事實(shí)上,你幾乎不用特意記任何東西。對(duì)于各種函數(shù)、語句,只要知道有那么個(gè)東西,用的時(shí)候知道上哪找就行了,用多了自然就記住了。學(xué)編程關(guān)鍵在理解編程思想。
一個(gè)小技巧:活用編譯器可以幫你很多忙。在VC中,當(dāng)你輸入成員符號(hào).或->時(shí),程序會(huì)自動(dòng)列出此類的成員,你只要選一個(gè)就行了。這樣便省了很多記憶負(fù)擔(dān)。例如,你想獲得一個(gè)CString類對(duì)象的長(zhǎng)度,對(duì)應(yīng)方法肯定是Get什么,但是GetLetterNum還是GetStrLength卻不知道,你可以輸入xxx.Get,這樣,你便可從列表中找到一個(gè)GetTextLength(),不是這個(gè)還能是什么,單擊它的話還可能出現(xiàn)說明。還可避免打錯(cuò)字。如果想調(diào)用本類的成員函數(shù),就輸入this->,就可以查看成員列表了。對(duì)于全局函數(shù),則是輸入::即可。這樣的話看起來還清楚。還有,如果沒有出現(xiàn)那個(gè)列表,八成是你弄錯(cuò)了什么東西,例如變量沒定義,或打錯(cuò)了字,但也可能是VC的BUG,很少就是了。對(duì)于初學(xué)者,這可是很好用的功能。
初學(xué)編程應(yīng)遵循的一條原則:比貓畫虎、不求甚解。關(guān)鍵在于很多東西你就甚解不了,例如MFC中稀奇古怪的宏。而且,甚解了也沒太大的好處,暫時(shí)還是不要管它,會(huì)用就行了,什么時(shí)候有了閑工夫再來慢慢琢磨。多留心別人的程序是如何實(shí)現(xiàn)的,并照著去做。有時(shí),一些小問題也體現(xiàn)著高深的思想。比如,一個(gè)變量要定義在什么地方,如何組織類的結(jié)構(gòu)。如果不太明白,就先找著別人的樣子去作,時(shí)間一長(zhǎng)就會(huì)自然而然的明白,這就像下棋一樣,老頭怎么下,你也跟著怎么下,畢竟他出錯(cuò)的可能比你小。
還有,我覺著初學(xué)者不應(yīng)把過多的精力放在象Cool的工具條,透明的、氣泡狀的窗口之類的工作上。再搞這些之前,你最好問問自己,自己的程序配得上這些漂亮的界面嗎?尤其是,千萬不要在剛開始動(dòng)手時(shí)就先打扮界面,以免界面也弄好了,熱情也沒了。畢竟,看在眼里的成果給人的刺激比枯燥的算法強(qiáng)得多。如果你想搞的話,也要等程序主體定型后再搞。初學(xué)時(shí)還應(yīng)多留心關(guān)于程序結(jié)構(gòu)組織的文章,這些東西是很重要的。要從一開始便養(yǎng)成良好的風(fēng)格。否則有一天當(dāng)你決定編一個(gè)大點(diǎn)的程序時(shí),你就會(huì)發(fā)現(xiàn)干到一半就干不下去了。
編程不是技術(shù)活,而是體力活:學(xué)的時(shí)候滿腦子全是技術(shù),可用的時(shí)候就真成了體力活了。真正做起東西來,最重要的是要有毅力堅(jiān)持到完。意志不堅(jiān)強(qiáng)就難免半途而廢。關(guān)于初學(xué)者是該學(xué)VC還是該學(xué)VB的問題:我覺著,學(xué)VC會(huì)難一些沒錯(cuò),但掌握學(xué)習(xí)方法的話也沒想象的那么難,而且學(xué)VC才能深刻領(lǐng)會(huì)面向?qū)?/p>
象編程的精髓。它使你的思想提升了一個(gè)高度,對(duì)以后的發(fā)展是大有好處的。再說,如果這點(diǎn)困難都克服不了,以后也很難有什么作為。所以,即使你打定主意用VB,也還是花些時(shí)間看看VC,至少知道它的大概結(jié)構(gòu)。從長(zhǎng)遠(yuǎn)看,這是很有好處的。
關(guān)于學(xué)C++ Builder還是Visual C++的問題:也許VC真的不太好,但總不會(huì)太糟。可關(guān)于VC的資料不知是關(guān)于C++ Builder的多少倍。尤其對(duì)于初學(xué)者,這時(shí)很要命的!何況兩者相差其實(shí)并不太多,學(xué)會(huì)了一種,再學(xué)另一種也不會(huì)太費(fèi)事。
第三篇:C++學(xué)習(xí)心得
C++學(xué)習(xí)心得
在計(jì)算機(jī)課程中,C++程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)的一門必修基礎(chǔ)課,該語言以其高效而又實(shí)用的特性:既可以進(jìn)行過程化程序設(shè)計(jì),又可進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì),是進(jìn)行軟件開發(fā)的直接工具。
學(xué)習(xí)語言是需要技巧的,無論是哪種語言,里面都是有規(guī)律的。對(duì)于計(jì)算機(jī)語言來說,我認(rèn)為應(yīng)該先理解,然后上機(jī)去實(shí)現(xiàn)它,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。
C++語言課程是一門實(shí)踐性很強(qiáng)的課程,一定要?jiǎng)邮侄鄬懺O(shè)計(jì)、編寫程序才能有所進(jìn)步。在實(shí)踐教學(xué)中必須做到循序漸進(jìn),對(duì)所學(xué)的每一部分內(nèi)容都應(yīng)該要求學(xué)生完成一定數(shù)量的實(shí)驗(yàn)內(nèi)容。每部分的上機(jī)習(xí)題必須精心挑選,既要有基本的、較簡(jiǎn)單的題目,又要有一些具有挑戰(zhàn)性的新穎有趣的題目。自己編寫的程序一定要到機(jī)器上去實(shí)現(xiàn),通過調(diào)試程序來修訂語法錯(cuò)誤,排除邏輯錯(cuò)誤,進(jìn)而提高編程能力,通過做一定量的習(xí)題,可以積累一定的經(jīng)驗(yàn),同時(shí)對(duì)程序設(shè)計(jì)的精髓會(huì)有所領(lǐng)悟,從而重視上機(jī)實(shí)驗(yàn)。
實(shí)踐重要,老師的教學(xué)方法同樣重要。要強(qiáng)調(diào)學(xué)以致用,展示學(xué)生能夠理解而且又容易提起興趣的用C++語言設(shè)計(jì)的軟件以及往屆學(xué)生的設(shè)計(jì)成果,給學(xué)生布置了幾個(gè)專題,比如:設(shè)計(jì)班級(jí)成績(jī)管理系統(tǒng)、簡(jiǎn)易的圖書管理系統(tǒng)、簡(jiǎn)易的通訊錄管理系統(tǒng)、小游戲等讓學(xué)生利用課余時(shí)間去思考、收集資料,以教師為主導(dǎo),以任務(wù)為主線,以學(xué)生為主體,過一段時(shí)間在課堂上組織學(xué)生發(fā)言和討論一次,看看大家對(duì)這些問題的思考程度,提提建議,鼓勵(lì)加引導(dǎo),最后到完成。這種教學(xué)法不僅可以讓學(xué)生獲得許多課外知識(shí),同時(shí)也促進(jìn)教學(xué)內(nèi)容的改革,而且也有利于充分挖掘?qū)W生的學(xué)習(xí)潛力。
當(dāng)然,僅靠一個(gè)學(xué)期的C++語言的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠得,需要在后續(xù)課程中進(jìn)行鞏固提高。C++兼容C語言,C語言是C++的子集,我們把C語言和C++融合為一門課程,第一學(xué)期授課以C語言為主,第二學(xué)期講授以C++為主,所有程序都以VC++為調(diào)式環(huán)境。經(jīng)過這樣的整合,知識(shí)內(nèi)容顯得很連貫,一氣呵成,為第三學(xué)期的Windows程序設(shè)計(jì)課程奠定了基礎(chǔ)。后繼的數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計(jì)、計(jì)算機(jī)網(wǎng)絡(luò)原理等課程實(shí)踐環(huán)節(jié)都利用C++語言進(jìn)行開發(fā),開展3年不間斷的C++編程訓(xùn)練。
第四篇:c++學(xué)習(xí)心得
可以搜索“課本書名的學(xué)習(xí)”、“關(guān)于C++的學(xué)習(xí)方法”
㈠ 我是從c語言開始的,后來學(xué)習(xí)c++,現(xiàn)在使用java,剛開始接觸面向?qū)ο蟮母拍顣r(shí)跟你現(xiàn)在的情況一樣,不過經(jīng)過一段時(shí)間的實(shí)際編程后,現(xiàn)在回頭再認(rèn)真讀一下這兩個(gè)定義,發(fā)現(xiàn)自己有了許多深入的理解,感覺自己開始體會(huì)到當(dāng)初那么多c語言的大牛為什么要轉(zhuǎn)到面向?qū)ο笊蟻砹?。?shí)際編程會(huì)對(duì)你的理解起到很大幫助作用的。
如果只是做些1000行以下的小程序,C++的優(yōu)勢(shì)倒真體現(xiàn)不出來,現(xiàn)在的程序已經(jīng)到了幾萬行,十幾萬行(已經(jīng)不能稱為程序,是一個(gè)軟件系統(tǒng)),編寫的話需要很成熟的軟件工程來控制,C++的優(yōu)勢(shì)就在于此,你所提到的繼承,虛擬,摸版,每一個(gè)概念都有軟件工程的基礎(chǔ)
真正的想理解C++,你應(yīng)該先學(xué)OOA和OOD,因?yàn)槭紫让嫦驅(qū)ο笫且环N思想,是一種程序分析和程序設(shè)計(jì)的思想。面向?qū)ο罂梢钥梢院芎玫捏w現(xiàn)現(xiàn)實(shí)之間事務(wù)的關(guān)系。因而它是一種比較好的程序分析和設(shè)計(jì)方法。而C++語言不過是可以很好的實(shí)現(xiàn)這些方法的成果的一種語言,如果你愿意,你也可以用C來實(shí)現(xiàn)實(shí)現(xiàn)這些設(shè)計(jì),一樣可以做到,只是難度更大一點(diǎn)。國(guó)內(nèi)的程序員大多只注重編程,不注重分析和設(shè)計(jì)的能力,所以到最后學(xué)到了C++的時(shí)候就感到很迷茫。所以我建議你看看北大的翻譯過的一本《面向?qū)ο蠓治觥泛汀睹嫦驅(qū)ο笤O(shè)計(jì)》。我原來有,可惜丟了。
VC說穿了就是微軟提供給大家的一個(gè)C++編譯平臺(tái)而已。千萬不要將C++和VC這兩個(gè)不同的東西混淆了。正如樓上的幾位高人所說,學(xué)習(xí)C++是學(xué)習(xí)OO編程思想的精髓,而學(xué)習(xí)VC則是如何掌握和運(yùn)用這個(gè)編譯平臺(tái)。之所以許多初學(xué)者被VC搞得頭昏腦脹(包括當(dāng)時(shí)的我自己),那是因?yàn)閂C和MFC里面包含有太多有關(guān)WindowsAPI的定義和結(jié)構(gòu),往往看了半天都不知道是干什么用的,因?yàn)槊恳豁?xiàng)引深出去都是一大堆的未知,這樣也只能造成更加的迷惑和不解。
其實(shí),我建議初學(xué)者大可不必早早的進(jìn)入Windows編程這個(gè)領(lǐng)域,先把C++的基礎(chǔ)打牢,尤其是對(duì)OO編程要有一個(gè)很清晰的概念。那時(shí)你再學(xué)習(xí)Windows編程,將會(huì)容易得多,說穿了用MFC對(duì)Windows編程無非也就是按照微軟所事先定義好的一些規(guī)范和結(jié)構(gòu),對(duì)一些對(duì)象的來回調(diào)用而已,而這些Windows編程往往在整個(gè)軟件項(xiàng)目中只是占據(jù)了UI這一小部分。一個(gè)程序真正的內(nèi)涵還是在于程序員對(duì)程序內(nèi)容、框架和結(jié)構(gòu)本身的一種創(chuàng)新。
有志者事竟成!大家千萬不要被困難所嚇倒,努力是不會(huì)白費(fèi)的!
“有效的程序員不應(yīng)該浪費(fèi)很多時(shí)間用于程序調(diào)試,他們應(yīng)該一開始就不要把故障引入?!?/p>
“程序測(cè)試是表明存在故障的非常有效的方法,但對(duì)于證明沒有故障,調(diào)試是很無能為力的?!?/p>
二 獻(xiàn)給所有C++初學(xué)者,只要你對(duì)C++有興趣。
見過太多得帖子問如何學(xué)習(xí)C++,也聽過很多人說找不到方法,其實(shí)所有人一開始都有這樣得困惑,我只想寫出自己的心得。
1、事必躬行。初學(xué)者開始最愛犯得毛病就是看書不動(dòng)手,盡信書不如無書(我也反對(duì)),語言和平臺(tái)有關(guān),任何平臺(tái)都不是絕對(duì)支持標(biāo)準(zhǔn)。大學(xué)C++老師開始上課就告訴我們了這個(gè)秘訣,而聽取得人不多,所以最后很大一批轉(zhuǎn)Java了。對(duì)于一個(gè)初學(xué)者來說,熟悉語法、鍛煉手感和培養(yǎng)思維最好得辦法就是code,照著書上(好書,大家認(rèn)可得)敲,編譯,并思考,你會(huì)發(fā)現(xiàn)很多問題,解決問題的同時(shí)你正在提高。有首歌曲這樣唱:說到不如做到,要做就做最好。
2、不恥上問。初學(xué)者有時(shí)候礙于面子,抑或是怕人家笑話而不敢問問題。沒有必要,你問得人以前也是一樣過來得。前提找一個(gè)技術(shù)上大家認(rèn)為強(qiáng)得,而且容易交流得。一開始你問得問題他一定可以解決,所以這個(gè)時(shí)候你如坐春風(fēng),一日千里;慢慢得你一定可以提出強(qiáng)人解決不了得問題(不管那方面技術(shù)),這個(gè)時(shí)候可以說你已經(jīng)入門了,把強(qiáng)人解決不了任務(wù)解決掉,解決掉你自己一定很有成就感;慢慢得,你會(huì)發(fā)現(xiàn)你得問題強(qiáng)人基本解決不了,不是你超過他,而是你們關(guān)注領(lǐng)域不同,這個(gè)時(shí)候,你自己也成為強(qiáng)人了,嘿嘿!
3、否極泰來。在你專注一個(gè)技術(shù)極度郁悶得時(shí)候不要放棄,可以暫時(shí)放棄,但是請(qǐng)馬上回來,因?yàn)殪`感在等你。黎明前確實(shí)是黑暗,但是到了黎明,下面就是很長(zhǎng)一段得光明。我當(dāng)初學(xué)習(xí)MFC三個(gè)月,連門都沒有進(jìn)去,我非常懊惱,看著人家學(xué)VB得輕松就做出窗口程序,而自己還是在控制臺(tái)下苦戰(zhàn),向?qū)傻么a實(shí)在不懂。我也學(xué)習(xí)了幾天VB,然后不敢示弱得心把我拉回去,也不知道怎么回事,有一天靈感光顧,就這樣,輕松進(jìn)門,只用了一周。以后學(xué)習(xí)數(shù)據(jù)庫編程,Socket編程也遇到類似得情況,我都挺過來。所以你可以試一下,靈感光顧得感覺非常美妙!!
4、盡善盡美。別太得意,盡管你已經(jīng)是高手。不要認(rèn)為解決一個(gè)問題就OK,實(shí)現(xiàn)了一個(gè)功能就了事,問下自己得解決方法是不是最簡(jiǎn)單得,最優(yōu)雅得,最容易被理解,最通用得......。山外有山,人外有人,多學(xué)習(xí)別人先進(jìn)經(jīng)驗(yàn),嚴(yán)格要求自己,追求完美,盡管完美追不到,至少你自己在提高。
三 根據(jù)我的經(jīng)歷,我覺得最重要的是學(xué)好C++的基礎(chǔ),也就是扎實(shí)的語法,盡管你可能覺得永遠(yuǎn)都不會(huì)用到它,但它反映了你對(duì)這門語言的理解,這是很重要的。另外,有些遺憾的說,在大多數(shù)時(shí)候,C++主要還是用C的東西,除了類,C++似乎真的無用武之地了。面對(duì)對(duì)象?哎,真不想說!不過C++的庫倒是經(jīng)常用,但是與C之間沒有很明顯的差異了
。四 關(guān)于要不要學(xué)習(xí)C++?(結(jié)論:要學(xué),一定要學(xué)?。?/p>
如今在網(wǎng)上很多為要不要學(xué)C++爭(zhēng)的不可開交,因?yàn)楝F(xiàn)在JAVA,C#。NET都炒的很火,特別是JAVA,大有炸平廬山,停止地球轉(zhuǎn)動(dòng)之勢(shì)。用林銳同志的話說,其實(shí)JAVA只是C++外甥,跑到舅舅身上撒了一泡尿而已。首先,我們從JAVA 的來歷上來說,JAVA的設(shè)計(jì)初衷是用來給家用電器設(shè)計(jì)程序使用的,最初設(shè)計(jì)者想用C++,但覺得C++太復(fù)雜,就在C++的基礎(chǔ)上做了一些簡(jiǎn)化,設(shè)計(jì)出了JAVA,它的設(shè)計(jì)思想是跨平臺(tái),所以必須先在運(yùn)行平臺(tái)上安裝虛擬機(jī),然后把源程序編譯成中間語言在運(yùn)行。這是一個(gè)優(yōu)點(diǎn),但我們說任意優(yōu)點(diǎn)都是建立在缺點(diǎn)上的,JAVA的缺點(diǎn)就是運(yùn)行速度慢,這對(duì)于某些系統(tǒng)來說是致命弱點(diǎn)。況且,JAVA中沒有指針,對(duì)于制作系統(tǒng)軟件來說,這更是無法饒恕的。再來看C++。C++產(chǎn)生于美國(guó)貝爾實(shí)驗(yàn)室,就是發(fā)明電話那個(gè)公司。設(shè)計(jì)初衷是用來改進(jìn)C的開發(fā)效率,C是面向過程的語言,開發(fā)效率底,貝爾實(shí)驗(yàn)室有大量的C程序員,所以只要在開發(fā)效率上提高一點(diǎn)點(diǎn),就可以節(jié)約數(shù)目龐大的成本。C是什么東西?是用來代替匯編編寫操作系統(tǒng)的語言,用C++代替C,可以得出兩個(gè)結(jié)論:第一,C++必須具有同C相當(dāng)?shù)膱?zhí)行速度;第二,C++必須比C具有較高的開發(fā)效率。執(zhí)行速度方面,C++的設(shè)計(jì)者的思想就是在改進(jìn)開發(fā)效率的同時(shí)盡量不增加C++的系統(tǒng)開銷,當(dāng)然有些地方非增加開銷不可,也把開銷控制在最小程度內(nèi)。具非權(quán)威研究報(bào)告,C++比C的執(zhí)行開銷多出不到10%。開發(fā)效率方面,C++引進(jìn)了面向?qū)ο髾C(jī)制,庫機(jī)制,最大程度上實(shí)現(xiàn)了代碼重用,這是軟件開發(fā)人員的福音。C++在改進(jìn)C的開發(fā)效率的同時(shí),對(duì)C的缺陷做了一些修補(bǔ)。C的優(yōu)點(diǎn)在C++中都得到了很好的保留,C的缺點(diǎn)在C++中都有了改進(jìn),有了更好的解決辦法。而且,為了現(xiàn)有的大量C程序維護(hù),C++還全面兼容了C??v觀當(dāng)今程序語言家族,我覺得只有C可以C++相提并論,門當(dāng)戶對(duì),其它語言都無法和C++相提并論。無論從什么角度來說,C++都算的上語言中的老大。
如今,網(wǎng)上有很多關(guān)于C++的爭(zhēng)論,其實(shí)爭(zhēng)論的人都是一些不知情的人,絕大多數(shù)是學(xué)校里的學(xué)生,我也曾經(jīng)這樣。在學(xué)校里的時(shí)候,不知道究竟應(yīng)該學(xué)習(xí)什么,要是遇到好的老師還可以,遇到垃圾老師,垃圾學(xué)校那就更糟糕。如今,什么MCSE,CCNA,CIW等等認(rèn)證漫天飛,把人搞的昏頭昏腦,其實(shí)這都是認(rèn)證公司炒的。社會(huì)上需要的是有真才實(shí)學(xué)的人,而不是需要證書。
我從大二開始學(xué)習(xí)編程,一開始學(xué)習(xí)VB,后來學(xué)習(xí)DELPHI,再后來學(xué)習(xí)C#,再后來學(xué)習(xí)C++,繞了個(gè)大圈子,最后還是繞回來了。而且重新學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),學(xué)習(xí)軟件工程,學(xué)習(xí)大學(xué)本科的基本課程,重新讀外國(guó)的程序設(shè)計(jì)名著,而這些以前在大學(xué)是不屑一顧的。勸如今還在學(xué)校的師弟師妹們,努力學(xué)習(xí)C++。
2。為什么要學(xué)習(xí)學(xué)習(xí)C++
1)C++的程序員身價(jià)普遍較高,當(dāng)然,前提是你必須是高手。我所在的城市,那些公司根本就招不到合格的C++程序員,一方面C++程序員要求高,學(xué)習(xí)C++的人越來越少了。當(dāng)然,懷著這個(gè)目的,你或許永遠(yuǎn)無法成為C++高手,但我把這個(gè)原因放在最前面,可以給大家一個(gè)很明確的激勵(lì),當(dāng)你接觸C++后,發(fā)現(xiàn)從學(xué)習(xí)中獲得樂趣比高的工資更有動(dòng)力;
2)C++的優(yōu)勢(shì)是用來開發(fā)大型軟件,從中可以學(xué)到很多優(yōu)秀的軟件設(shè)計(jì)思想。C++不是軟件開發(fā)的首選工具,一般說來,大多人更愿意學(xué)習(xí)和使用VB,為什么,簡(jiǎn)單。簡(jiǎn)單的另一個(gè)方面是功能的局限。微軟公司恨不的所有人都學(xué)VB,只有他一家會(huì)C++。容易上手,大家都喜歡學(xué),喜歡用,很多人拿一本200頁的書,看個(gè)兩三個(gè)星期,就覺得自己是個(gè)程序員了,可以開發(fā)軟件了,而且覺得做出來的東西很不錯(cuò)。當(dāng)軟件規(guī)模大到一定程度的時(shí)候,其他語言就越來越無法駕馭,這時(shí)C++的優(yōu)勢(shì)就體現(xiàn)出來了。你說做個(gè)成績(jī)管理系統(tǒng),人事查詢系統(tǒng),用VB,DELPHI,C#,JAVA都行,但是例如銀行,電信,保險(xiǎn),操作系統(tǒng),數(shù)據(jù)倉庫,圖形處理,編譯系統(tǒng),較底層的軟件時(shí),其他工具幾乎是無法完成的。就說C++的指針,JAVA沒有,在遇到數(shù)據(jù)量交大的數(shù)據(jù)排序,搜索,動(dòng)態(tài)內(nèi)存分配時(shí),它就沒有辦法了。所以說,學(xué)習(xí)C++,不僅僅是學(xué)到的一種語言,還學(xué)習(xí)了優(yōu)秀的軟件設(shè)計(jì)思想。
3)學(xué)習(xí)C++可以學(xué)習(xí)到計(jì)算機(jī)底層的理論,即使不是用C++開發(fā),對(duì)計(jì)算機(jī)運(yùn)行機(jī)制的理解,對(duì)建制穩(wěn)定的系統(tǒng),對(duì)運(yùn)用其他語言,也是一種促進(jìn)。這一點(diǎn),我是在學(xué)習(xí)過程中體會(huì)到的,所以,要說出個(gè)大家可以接受的理由來較難,大家以后學(xué)習(xí)就知道了。
3。怎樣學(xué)習(xí)C++?
首先,我們必須承認(rèn),學(xué)習(xí)要講究方法,有捷徑。其次,我們還得承認(rèn),學(xué)習(xí)要下苦功,要?jiǎng)?wù)實(shí)。上小學(xué)的時(shí)候,書上有個(gè)故事,是關(guān)于王羲之學(xué)習(xí)書法的:王獻(xiàn)之問他父親王羲之,學(xué)習(xí)書法的秘訣是什么,他父親把他帶到后院,指著18口大水缸說,你如果把這里的水都寫完了,就知道書法的秘訣在那里了。這個(gè)故事相信很多人都還記得。前幾天看梁肇新(豪杰公司老板)的《高手箴言》,他說如果你如果愿意利用5年時(shí)間來成為高手,那么你只要兩三年就會(huì)成為高手,如果你想一年成為高手,那么你5年也成不了高手。學(xué)習(xí)要切忌浮躁,要腳踏實(shí)地。我曾經(jīng)很浮躁,結(jié)果一直呆在菜鳥堆里,當(dāng)半年前我靜下心來學(xué)習(xí)C++,才感覺有真正的進(jìn)步?,F(xiàn)在做WEB開發(fā),雖然我從來不看WEB開發(fā)的書,但是我的同事遇到問題時(shí),我經(jīng)常能一下說出問題的所在。因?yàn)槟憧磫栴}的角度變了。所以,學(xué)習(xí)C++的第一個(gè)方法是:切忌浮躁。其實(shí)學(xué)任何東西都一樣,欲速則不達(dá)。從基本數(shù)據(jù)類型看起,從基本流程控制語句寫起。
其次,教材很重要,要看經(jīng)典名著。
五 通過這門課程,增加了我學(xué)習(xí)軟件技術(shù)的興趣,雖然還不明確軟件技術(shù)包含的具體內(nèi)容,但從C++語言這門課程開始,已發(fā)現(xiàn)程序設(shè)計(jì)的樂趣,在學(xué)習(xí)C++語言的過程中也學(xué)到了許多計(jì)算機(jī)應(yīng)用基礎(chǔ)知識(shí),對(duì)計(jì)算機(jī)的機(jī)體也有了一個(gè)大體的了解。
在實(shí)際操作過程中犯的一些錯(cuò)誤還會(huì)有意外的收獲,感覺實(shí)訓(xùn)很有意思。在具體操作中對(duì)這學(xué)期所學(xué)的C++語言的理論知識(shí)得到鞏固,達(dá)到實(shí)訓(xùn)的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機(jī)中應(yīng)更加注意,同時(shí)體會(huì)到C++語言具有的語句簡(jiǎn)潔,使用靈活,執(zhí)行效率高等特點(diǎn)。發(fā)現(xiàn)上機(jī)實(shí)訓(xùn)的重要作用,特別是對(duì)數(shù)組和循環(huán)有了深刻的理解。
通過實(shí)際操作,學(xué)會(huì) C++語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題、解決問題的能力。深刻體會(huì)到“沒有做不到的,只有想不到的”,“團(tuán)結(jié)就是力量”,“實(shí)踐是檢驗(yàn)真理的標(biāo)準(zhǔn)”,“不恥下問”??的寓意。
計(jì)時(shí)在此希望以后應(yīng)多進(jìn)行這樣的實(shí)訓(xùn),加長(zhǎng)設(shè)間,培養(yǎng)學(xué)生獨(dú)立思考問題的能力,提高實(shí)際操作水平。C(參考的別人博客。。。)六 學(xué)習(xí)C++的心得體會(huì)--最近一直在學(xué)習(xí)C++,看到這篇過去人的心得,讀之,有些共鳴,也意識(shí)到了一些問題。故引用在此,以紀(jì)念我學(xué)習(xí)C++的里程,從現(xiàn)在正式開始了,哈哈。
有50條哦,有些還是有價(jià)值的,可以關(guān)注一下的。
1.把C++當(dāng)成一門新的語言學(xué)習(xí)(和C沒啥關(guān)系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因?yàn)樗麄兒茈y而我們自己是初學(xué)者所以就不看; 4.不要被VC、BCB、BC、MC、TC等詞匯所迷惑——他們都是集成開發(fā)環(huán)境,而我們要學(xué)的是一門語言;
5.不要放過任何一個(gè)看上去很簡(jiǎn)單的小編程問題——他們往往并不那么簡(jiǎn)單,或者可以引伸出很多知識(shí)點(diǎn);
6.會(huì)用Visual C++,并不說明你會(huì)C++;
7.學(xué)class并不難,template、STL、generic programming也不過如此——難的是長(zhǎng)期堅(jiān)持實(shí)踐和不遺余力的博覽群書;
8.如果不是天才的話,想學(xué)編程就不要想玩游戲——你以為你做到了,其實(shí)你的C++水平并沒有和你通關(guān)的能力一起變高——其實(shí)可以時(shí)刻記?。簩W(xué)C++是為了編游戲的;
9.看Visual C++的書,是學(xué)不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應(yīng)該學(xué)YY;——是你自己不行了吧???
11.浮躁的人容易問:我到底該學(xué)什么;——?jiǎng)e問,學(xué)就對(duì)了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學(xué)呀!
14.浮躁的人容易問:XX和YY哪個(gè)好;——告訴你吧,都好——只要你學(xué)就行;
15.浮躁的人分兩種:a)只觀望而不學(xué)的人;b)只學(xué)而不堅(jiān)持的人;
16.把時(shí)髦的技術(shù)掛在嘴邊,還不如把過時(shí)的技術(shù)記在心里;
17.C++不僅僅是支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語言;
18.學(xué)習(xí)編程最好的方法之一就是閱讀源代碼;
19.在任何時(shí)刻都不要認(rèn)為自己手中的書已經(jīng)足夠了;
20.請(qǐng)閱讀《The Standard C++ Bible》(中文版:標(biāo)準(zhǔn)C++寶典),掌握C++標(biāo)準(zhǔn);
21.看得懂的書,請(qǐng)仔細(xì)看;看不懂的書,請(qǐng)硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什么——請(qǐng)看第二遍、第三遍;
23.請(qǐng)看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發(fā)環(huán)境的搖籃上,要學(xué)會(huì)控制集成開發(fā)環(huán)境,還要學(xué)會(huì)用命令行方式處理程序;
25.和別人一起討論有意義的C++知識(shí)點(diǎn),而不是爭(zhēng)吵XX行不行或者YY與ZZ哪個(gè)好;
26.請(qǐng)看《程序設(shè)計(jì)實(shí)踐》,并嚴(yán)格的按照其要求去做;
27.不要因?yàn)镃和C++中有一些語法和關(guān)鍵字看上去相同,就認(rèn)為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的“擴(kuò)充”——如果C++一開始就起名叫Z語言,你一定不會(huì)把C和Z語言聯(lián)系得那么緊密;
29.請(qǐng)不要認(rèn)為學(xué)過XX語言再改學(xué)C++會(huì)有什么問題——你只不過又在學(xué)一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以后再來認(rèn)定自己是不是已經(jīng)學(xué)會(huì)了C++;
31.學(xué)習(xí)編程的秘訣是:編程,編程,再編程;
32.請(qǐng)留意下列書籍:《C++面向?qū)ο蟾咝Ь幊蹋–++ Effective Object-Oriented Software Construction)》《面向?qū)ο筌浖?gòu)造(Object-Oriented Software Construction)》《設(shè)計(jì)模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向?qū)ο蠹夹g(shù)不只是C++專有的;
34.請(qǐng)把書上的程序例子親手輸入到電腦上實(shí)踐,即使配套光盤中有源代碼;
35.把在書中看到的有意義的例子擴(kuò)充;
36.請(qǐng)重視C++中的異常處理技術(shù),并將其切實(shí)的運(yùn)用到自己的程序中;
37.經(jīng)常回顧自己以前寫過的程序,并嘗試重寫,把自己學(xué)到的新知識(shí)運(yùn)用進(jìn)去;
38.不要漏掉書中任何一個(gè)練習(xí)題——請(qǐng)全部做完并記錄下解題思路; 39.C++語言和C++的集成開發(fā)環(huán)境要同時(shí)學(xué)習(xí)和掌握;
40.既然決定了學(xué)C++,就請(qǐng)堅(jiān)持學(xué)下去,因?yàn)閷W(xué)習(xí)程序設(shè)計(jì)語言的目的是掌握程序設(shè)計(jì)技術(shù),而程序設(shè)計(jì)技術(shù)是跨語言的;
41.就讓C++語言的各種平臺(tái)和開發(fā)環(huán)境去激烈的競(jìng)爭(zhēng)吧,我們要以學(xué)習(xí)C++語言本身為主;
42.當(dāng)你寫C++程序?qū)懙揭话雲(yún)s發(fā)現(xiàn)自己用的方法很拙劣時(shí),請(qǐng)不要馬上停手;請(qǐng)盡快將余下的部分粗略的完成以保證這個(gè)設(shè)計(jì)的完整性,然后分析自己的錯(cuò)誤并重新設(shè)計(jì)和編寫(參見43);
43.別心急,設(shè)計(jì)C++的class確實(shí)不容易;自己程序中的class和自己的class設(shè)計(jì)水平是在不斷的編程實(shí)踐中完善和發(fā)展的;
44.決不要因?yàn)槌绦颉昂苄 本筒蛔裱承┠悴皇炀毜囊?guī)則——好習(xí)慣是培養(yǎng)出來的,而不是一次記住的;
45.每學(xué)到一個(gè)C++難點(diǎn)的時(shí)候,嘗試著對(duì)別人講解這個(gè)知識(shí)點(diǎn)并讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時(shí)發(fā)現(xiàn)的自己忽視或不理解的知識(shí)點(diǎn);
47.請(qǐng)不斷的對(duì)自己寫的程序提出更高的要求,哪怕你的程序版本號(hào)會(huì)變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請(qǐng)不要做浮躁的人;
50.請(qǐng)熱愛C++!
七
我是從去年開始學(xué)C的,也不學(xué)得很好,老師在課堂上講的是一些概念的東西,關(guān)于編程的習(xí)題很少,感覺自己好象已經(jīng)把C學(xué)
懂了,但在編程的時(shí)候,怎么想也不想不出來,慚慚的對(duì)C已經(jīng)失去了信心,多得一位網(wǎng)友指導(dǎo)使我重新開始學(xué)C,那是我第一次上CSDN的時(shí)候,我在社區(qū)里發(fā)了一條求助信息,是關(guān)于怎么學(xué)習(xí)語言的,一位熱心是朋友的回答,他詳細(xì)地說了他編程的成長(zhǎng)過程,使我認(rèn)識(shí)到,學(xué)習(xí)語言一定要多上機(jī)編程,自己去發(fā)現(xiàn)錯(cuò)誤,然后一段時(shí)間后,在重新看自己的寫過的代碼,這樣下去,可以重新學(xué)到很多東西,自己去慢慢地體會(huì)吧,從那以后我慢慢地寫代碼,上機(jī)練習(xí),從學(xué)C到C++,不過到目前也看不懂模板,學(xué)到了多態(tài)的時(shí)候,腦子很暈,看了幾很多次也沒有看,那時(shí)候真想放棄,不在學(xué)C++,然而我沒有,我試著慢慢地去深入,從虛函數(shù)開始,慢慢地了解多態(tài),然后用學(xué)習(xí)多態(tài)的方法,學(xué)習(xí)模板,期中也多次看別人的代碼,等到模板已經(jīng)學(xué)得差不多了,C++也了解個(gè)大概了。
這時(shí)可以,試著用VC寫代碼,畢竟以后是要在VC上寫的,但然還有很多其它的,(如BCB,GCC,etc)慢慢去了解Microsoft的窗口機(jī)制,做到語言與開發(fā)工具相結(jié)合的學(xué)習(xí),這時(shí)多了解一下,軟件工程,了解一個(gè)軟件的開發(fā)過程,多去論壇,和朋友討論,多看代碼,一年以后可以有小成了,
第五篇:C++學(xué)習(xí)心得小結(jié)
C++的學(xué)習(xí)心得
注意:因?yàn)槲覀冊(cè)趯?shí)驗(yàn)室大多是以項(xiàng)目為基礎(chǔ)來學(xué)習(xí)C++,這樣可能導(dǎo)致我們不能形成一個(gè)知識(shí)體系,所以建議大一同學(xué)腳踏實(shí)地的從頭學(xué)習(xí)C++,即使時(shí)間不充裕的大
二、大三同學(xué)在學(xué)習(xí)時(shí)也要做好筆記,以便下次遇到同樣的錯(cuò)誤能很快解決。
介于大多數(shù)人都要學(xué)C語言,所以本文就以C++與C語言的對(duì)比開始。
要區(qū)分C語言和C++的不同,首先要想明白,用磚頭建造城市、用房屋建造城市與用兩者共同建造城市的不同。1.想要學(xué)C++必須掌握C語言的基礎(chǔ)運(yùn)用,這要從C++的產(chǎn)生說起。C++其實(shí)并不是一個(gè)新的計(jì)算機(jī)語言,它只是在C語言的基礎(chǔ)上預(yù)先編寫好了很多函數(shù)。所以如果把C語言比為磚塊,那么C++就是有磚塊組成的一些小的建筑。所以學(xué)習(xí)C++必需先掌握C語言的基礎(chǔ)運(yùn)用。2.C語言和C++哪個(gè)難?
其實(shí)這個(gè)問題提的很不理想。試問:建起一個(gè)城市,是用磚頭從頭建起來簡(jiǎn)單,還是把一些已經(jīng)建好,并且使我們需要的房子擺放好簡(jiǎn)單?很明顯C++本身的作用是為了方便使用C語言編程。3.C語言和C++在語法上有什么不同?
就我最近對(duì)C++學(xué)習(xí)時(shí)遇到的一些問題來看,C++在語法上基本與C語言一致。但是由于房屋是別人建的,要使用它就要明白它們的建造過程(當(dāng)然有些我們只要直接使用就行了,尤其是在前期)。而C++中封裝的函數(shù),也是C++的開發(fā)者已經(jīng)建好的,所以我們要很好地使用它們就要明白它們的建造方式,至少要知道它們的使用語法。
4.C++語言與C語言的不同之處(準(zhǔn)確的說應(yīng)該是來看看C++開發(fā)者已經(jīng)為我們做好了什么)
注意:以下只是我在編寫六維鼠標(biāo)時(shí)遇到的,不全面,其余區(qū)別大家可以在以后的學(xué)習(xí)中自己摸索。1)c語言后綴.c,c++后綴.cpp。
2)當(dāng)函數(shù)定義放在函數(shù)調(diào)用之后時(shí),C程序的函數(shù)原型即聲明有時(shí)可省略,而C++的函數(shù)聲明不能省略,而且還要求函數(shù)的所有參數(shù)在函數(shù)原型的圓括號(hào)中聲明。一個(gè)不帶參數(shù)的C函數(shù)原型必須使用void關(guān)鍵字,而C++函數(shù)原型可以使用空參數(shù)表。
3)C++中用new和delete運(yùn)算符取代C的內(nèi)存分配和釋放函數(shù)malloc()和free()。4)const常量類型:用來表示一個(gè)“常值變量”與#define的區(qū)別: #define size 20
//不加;只是文本替換此后不再檢查,可能產(chǎn)生負(fù)作用 Const int size=20;//加;替換時(shí)進(jìn)行嚴(yán)格檢查,只有當(dāng)size是int型時(shí)才替換。
C++面向?qū)ο蟮某绦蛟O(shè)計(jì)
概述:面向?qū)ο蟛恢皇且环N程序設(shè)計(jì)方法,還是一種建立客觀事物模型、分析復(fù)雜事物的思想方法,他是以人們通常描述現(xiàn)實(shí)世界的方法來描述要解決的問題。
1.結(jié)構(gòu)化程序設(shè)計(jì):是一種自頂而下、逐步求精的模塊化程序設(shè)計(jì)方法。
類:對(duì)象是累的一個(gè)實(shí)例。類=數(shù)據(jù)結(jié)構(gòu)+對(duì)數(shù)據(jù)進(jìn)行操作的函數(shù)
面向?qū)ο蟮某绦蛟O(shè)計(jì)的基本特征:抽象、封裝、繼承和多態(tài)。
抽象:對(duì)一類對(duì)象進(jìn)行概括,抽出他們共同的性質(zhì)并加以描述的過程。
封裝:將抽象得到的屬性數(shù)據(jù)和行為代碼有機(jī)的結(jié)合,形成一個(gè)具有類特征的統(tǒng)一體。繼承:一個(gè)新類可以從已有的類派生而來。
多態(tài):不同對(duì)象對(duì)于同樣的施加于其上的作用會(huì)有不同的反應(yīng)。2.類的定義與實(shí)現(xiàn):
加上類名和作用域限定符(::)。
3.成員函數(shù)的定義形式與一般函數(shù)的定義形勢(shì)基本相同,但如果在類的外部定義成員函數(shù),必須在成員函數(shù)名前一般將類的定義放在頭文件(.h)中,類的實(shí)現(xiàn)放在源文件(*.cpp)中,二main主函數(shù)可以放在另一個(gè)源文件中。在源文件中用#include編譯預(yù)處理指令包含頭文件。
4.對(duì)象:對(duì)象是類的一個(gè)實(shí)例,定義并實(shí)現(xiàn)了類,就可以利用類來聲明對(duì)象,其形式與普通變量的聲明類似。
例如:以下用類Time聲明了對(duì)象t1,today和對(duì)象的指針pt1:
Time t1,today;//聲明對(duì)象t1,today //聲明指向?qū)ο髏1的指針pt1
Time *pt1=&t1;
聲明對(duì)象后,就可以像引用結(jié)構(gòu)變量一樣,利用成員運(yùn)算符“.”或指向運(yùn)算符“->”引用對(duì)象的公有成員,但注意不能引用對(duì)象的非公有成員。如:pt1->setTime()或t1.showTime()5.構(gòu)造函數(shù)和析構(gòu)函數(shù):在聲明對(duì)象時(shí),對(duì)象一般需要進(jìn)行初始化,及對(duì)成員變量進(jìn)行初始化。在定義類時(shí)不能對(duì)成員變量進(jìn)行初始化,因?yàn)椴荒艽_定類中定義的成員變量是屬于哪一個(gè)對(duì)象。
構(gòu)造函數(shù):是一種特殊的成員函數(shù),特殊性在于:它不需要用戶程序調(diào)用,就能在創(chuàng)建對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用。其作用就是在對(duì)象被創(chuàng)建時(shí)利用初始值去構(gòu)建對(duì)象,使得在聲明對(duì)象時(shí)就能自動(dòng)地完成對(duì)象的初始化。析構(gòu)函數(shù):是在對(duì)象的生存期即將結(jié)束時(shí)由系統(tǒng)自動(dòng)調(diào)用的。析構(gòu)函數(shù)的作用與構(gòu)造函數(shù)相反,用來在對(duì)象被刪除前做一些清理工作和數(shù)據(jù)保存工作。
構(gòu)造函數(shù)的名稱與類名相同,析構(gòu)函數(shù)的名稱是在類明前加符號(hào)“~”構(gòu)成(表達(dá)取反的意思)。注意,構(gòu)造函數(shù)和析構(gòu)函數(shù)不能有任何返回類型,包括void類型;析構(gòu)函數(shù)不能有參數(shù)。下例說明了構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義方法及執(zhí)行順序
6.靜態(tài)數(shù)據(jù)成員在儲(chǔ)存類型上類似于一般的static靜態(tài)變量,也具有全局性。
靜態(tài)數(shù)據(jù)成員的屬性也可以是公有、私有或保護(hù)的。對(duì)于公有靜態(tài)數(shù)據(jù)成員,除了可以像一般數(shù)據(jù)庫成員那樣,直接通過對(duì)象或在成員函數(shù)中訪問它們,還可以利用類名加作用域限定符(::)來訪問他們。對(duì)于私有和保護(hù)屬性的靜態(tài)數(shù)據(jù)庫成員,只能在成員函數(shù)中訪問它們。
由于靜態(tài)數(shù)據(jù)成員不具體屬于哪一個(gè)對(duì)象,因此不能構(gòu)造函數(shù)或其他成員函數(shù)中對(duì)他們進(jìn)行初始化,他們的初始化必須在類體外進(jìn)行。
注意:靜態(tài)成員函數(shù)只能訪問類的靜態(tài)成員(成員變量和成員函數(shù)),而不能訪問非靜態(tài)函數(shù)。解決這個(gè)問題的方法是將對(duì)象作為靜態(tài)成員函數(shù)的參數(shù),然后在靜態(tài)成員函數(shù)中通過對(duì)象訪問非靜態(tài)成員。
7.this指針:在成員函數(shù)中訪問數(shù)據(jù)成員或調(diào)用其他成員函數(shù)不需要指定對(duì)象,因?yàn)樗麄兌际峭ㄟ^一個(gè)隱藏的this指針確定當(dāng)前的對(duì)象。
例如:void Time :: showTime(){cout< void Time :: showTime(Time* this){ cout< 8.友元 定義:友元的另一種類型是友元類,一個(gè)類可以聲明另一個(gè)類為其友元類,友元類的所有成員函數(shù)都可以訪問聲明其為友元類的所有成員。 構(gòu)成:一個(gè)函數(shù)要成為一個(gè)類的有元函數(shù),需要在類的定義中聲明該函數(shù),并在函數(shù)聲明的前面加上關(guān)鍵字friend。 作用:友元提供了不同類或不同類的成員函數(shù)之間以及成員函數(shù)和一般函數(shù)之間的數(shù)據(jù)共享機(jī)制。注意:友元關(guān)系是單方向的,不具有交換性和傳遞性。 9.常對(duì)象和常對(duì)象成員:對(duì)于急需要共享又需要安全的數(shù)據(jù),可以利用const來進(jìn)行保護(hù)。 常對(duì)象:常對(duì)象的數(shù)據(jù)成員的值在對(duì)象的整個(gè)生存期內(nèi)不能被改變,必須利用構(gòu)造函數(shù)進(jìn)行初始化,且以后不能再被更新。聲明格式有以下兩種: const<類名><對(duì)象名>(初始值類表)例如:const Time meeting(8,30,00);成員函數(shù)稱為常成員函數(shù)。格式如下: <函數(shù)類型> <函數(shù)名>(<參數(shù)表>)const;例如,下面聲明的成員函數(shù)MemberFun()就不能修改對(duì)象的數(shù)據(jù)成員。 void MemberFun()const;在常成員函數(shù)中只能調(diào)用常成員函數(shù),而調(diào)用其他普通函數(shù)可能會(huì)造成簡(jiǎn)介修改數(shù)據(jù)成員。 常數(shù)據(jù)成員:可以使用const關(guān)鍵字將數(shù)據(jù)成員聲明為常數(shù)據(jù)成員。常數(shù)據(jù)成員的初始值只能通過構(gòu)造函數(shù)獲取,并且只能在構(gòu)造函數(shù)的初始化列表中設(shè)置其初始值。靜態(tài)常數(shù)據(jù)成員初始化只能在類體外進(jìn)行。11. 繼承與派生:C++中,可以在已有類的基礎(chǔ)上定義一個(gè)新類,新類稱為原有類的派生類或子類,而原有類稱為新定義類的基類或父類。 語法如下: class<派生類名> : [<派生方式>] <基類名>{… 例如: //派生類新增加的成員聲明列表}; <類名> const <對(duì)象名>(初始值類表)10.常成員函數(shù):可以使用const關(guān)鍵字限制成員函數(shù)對(duì)數(shù)據(jù)成員進(jìn)行修改操作,這種使用const關(guān)鍵字進(jìn)行聲明的class Car : public Vehicle{… //在派生類Car中新增加的成員};基類中原有成員的訪問權(quán)限在派生類中可以被修改,它們的訪問權(quán)限由派生類定義中的<派生方式>決定。但注意,為了不破壞基類的封裝性,無論采用哪種派生方式,基類的私有成員在派生類中都是不可見的,即不允許在派生類的成員函數(shù)中訪問基類的私有成員。 public:punlic(公有派生)是類繼承中最常見派生方式。這樣就可以在派生類的成員函數(shù)中訪問基類中原有的非私有成員,并能通過派生類的對(duì)象直接訪問基類中原有的公有成員。private:采用private(私有派生),只允許在派生類的成員函數(shù)中訪問基類的非私有成員,不能通過派生類的對(duì)象直接訪問基類的任何成員。 protected:采用protected(保護(hù)派生),基類中所有的公有和保護(hù)成員在派生類中都成為保護(hù)成員。總結(jié):派生方式就是把基類的非私有成員在派生類中以什么類型存在。