C++學習心得小結_第1頁
C++學習心得小結_第2頁
C++學習心得小結_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C+的學習心得注意:因為我們在實驗室大多是以項目為基礎來學習 C+ ,這樣可能導致我們不能形成一個知識體系,所以建議大一同學腳踏實地的從頭學習 C+ ,即使時間不充裕的大二、大三同學在學習時也要做好筆記,以便下次遇到同樣的錯誤能很快解決。介于大多數人都要學C 語言,所以本文就以C+ 與 C 語言的對比開始。要區分C 語言和C+ 的不同, 首先要想明白, 用磚頭建造城市、用房屋建造城市與用兩者共同建造城市的不同。1. 想要學 C+必須掌握 C 語言的基礎運用,這要從 C+的產生說起。 C+其實并不是一個新的計算機語言,它只是在C 語言的基礎上預先編寫好了很多函數。所以如果把C 語言比為磚塊,那么

2、C+就是有磚塊組成的一些小的建筑。所以學習C+必需先掌握C語言的基礎運用。2. C 語言和 C+哪個難?其實這個問題提的很不理想。試問:建起一個城市,是用磚頭從頭建起來簡單,還是把一些已經建好,并且使我們需要的房子擺放好簡單?很明顯C+本身的作用是為了方便使用C語言編程 。3. C 語言和 C+在語法上有什么不同?就我最近對 C+學習時遇到的一些問題來看, C+在語法上基本與 C 語言一致。但是由于房屋是別人建的,要使用它就要明白它們的建造過程 (當然有些我們只要直接使用就行了, 尤其是在前期)。而 C+中封裝的函數, 也是 C+的開發者已經建好的, 所以我們要很好地使用它們就要明白它們的建造

3、方式,至少要知道它們的使用語法。4. C+語言與 C語言的不同之處(準確的說應該是來看看 C+開發者已經為我們做好了什么)注意:以下只是我在編寫六維鼠標時遇到的,不全面,其余區別大家可以在以后的學習中自己摸索。1)c 語言后綴 .c , c+后綴 .cpp 。2)當函數定義放在函數調用之后時,C 程序的函數原型即聲明有時可省略,而C+的函數聲明不能省略,而且還要求函數的所有參數在函數原型的圓括號中聲明。一個不帶參數的C 函數原型必須使用 void 關鍵字,而C+函數原型可以使用空參數表。3)C+中用 new 和 delete運算符取代C的內存分配和釋放函數malloc()和 free()。4)

4、const 常量類型:用來表示一個“常值變量”與#define的區別:1.#define size 20)中,類的實現放在源文件( *.cpp )中,二 main 主函數可以放在另一個源文件中。在源文件中用#include編譯預處理指令包含頭文件。2. 對象:對象是類的一個實例,定義并實現了類,就可以利用類來聲明對象,其形式與普通變量的聲明類似。例如:以下用類Time 聲明了對象t1 ,today 和對象的指針pt1 :Time t1,today; 或指向運算符“ -> ”引用對象的公有成員,但注意不能引用對象的非公有成員。如 :pt1->setTime() 或 ()3. 構造函數

5、和析構函數:在聲明對象時,對象一般需要進行初始化,及對成員變量進行初始化。在定義類時不能對成員變量進行初始化,因為不能確定類中定義的成員變量是屬于哪一個對象。構造函數:是一種特殊的成員函數,特殊性在于:它不需要用戶程序調用,就能在創建對象時由系統自動調用。其作用就是在對象被創建時利用初始值去構建對象,使得在聲明對象時就能自動地完成對象的初始化。析構函數:是在對象的生存期即將結束時由系統自動調用的。析構函數的作用與構造函數相反,用來在對象被刪除前做一些清理工作和數據保存工作。構造函數的名稱與類名相同,析構函數的名稱是在類明前加符號“”構成(表達取反的意思)。注意,構造函數和析構函數不能有任何返回

6、類型,包括void類型;析構函數不能有參數。下例說明了構造函數和析構函數的定義方法及執行順序4.靜態數據成員在儲存類型上類似于一般的static靜態變量,也具有全局性。靜態數據成員的屬性也可以是公有、私有或保護的。對于公有靜態數據成員,除了可以像一般數據庫成員那樣,直接通過對象或在成員函數中訪問它們,還可以利用類名加作用域限定符(:)來訪問他們。對于私有和保護屬性的靜態數據庫成員,只能在成員函數中訪問它們。由于靜態數據成員不具體屬于哪一個對象,因此不能構造函數或其他成員函數中對他們進行初始化,他們的初始化必須在類體外進行。注意:靜態成員函數只能訪問類的靜態成員(成員變量和成員函數),而不能訪問

7、非靜態函數。解決這個問題的方法是將對象作為靜態成員函數的參數,然后在靜態成員函數中通過對象訪問非靜態成員。5. this 指針:在成員函數中訪問數據成員或調用其他成員函數不需要指定對象,因為他們都是通過一個隱藏的 this 指針確定當前的對象。例如: void Time : showTime()cout<<hour : <<minute<< : <<second<<endl;而實際上編譯器會把 this 指針作為成員函數的參數,即上述函數定義等同于:void Time : showTime(Time* this) cout<&l

8、t;this->hour : << this->minute<<: << this->second<<endl;在一個成員函數中經常需要調用其他函數(非本類的成員函數) ,而有時需要把當前對象(即對象的地址)作為參數傳遞給被調用函數,這是必須使用this指針。區別于非靜態成員函數,靜態成員函數沒有 this 指針,因為靜態成員函數屬于整個類,它只有一個運動實例,不需要通過對象,通過類就可以調用它。6. 友元定義:友元的另一種類型是友元類,一個類可以聲明另一個類為其友元類,友元類的所有成員函數都可以訪問聲明其為友元類的所有成員。構

9、成:一個函數要成為一個類的有元函數,需要在類的定義中聲明該函數,并在函數聲明的前面加上關鍵字 friend 。作用:友元提供了不同類或不同類的成員函數之間以及成員函數和一般函數之間的數據共享機制。注意:友元關系是單方向的,不具有交換性和傳遞性。7.常對象和常對象成員:對于急需要共享又需要安全的數據,可以利用const 來進行保護。常對象:常對象的數據成員的值在對象的整個生存期內不能被改變,必須利用構造函數進行初始化,且以后不能再被更新。聲明格式有以下兩種:const< 類名 ><對象名 >( 初始值類表 )<類名 > const < 對象名 >(

10、 初始值類表 )例如: const Time meeting(8,30,00);8.常成員函數:可以使用 const 關鍵字限制成員函數對數據成員進行修改操作,這種使用const 關鍵字進行聲明的成員函數稱為常成員函數。格式如下:<函數類型 > < 函數名 > (< 參數表 >) const;例如,下面聲明的成員函數MemberFun()就不能修改對象的數據成員。void MemberFun() const;在常成員函數中只能調用常成員函數,而調用其他普通函數可能會造成簡介修改數據成員。常數據成員: 可以使用 const 關鍵字將數據成員聲明為常數據成員。

11、常數據成員的初始值只能通過構造函數獲取,并且只能在構造函數的初始化列表中設置其初始值。靜態常數據成員初始化只能在類體外進行。11 繼承與派生: C+ 中,可以在已有類的基礎上定義一個新類,新類稱為原有類的派生類或子類,而原有類稱為新定義類的基類或父類。語法如下:class< 派生類名>:<派生方式> <基類名 >/ 派生類新增加的成員聲明列表;例如:class Car : public Vehicle/ 在派生類Car中新增加的成員;基類中原有成員的訪問權限在派生類中可以被修改,它們的訪問權限由派生類定義中的<派生方式 >決定。但注意,為了不破壞基類的封裝性,無論采用哪種派生方式,基類的私有成員在派生類中都是不可見的,即不允許在派生類的成員函數中訪問基類的私有成員。public:punlic(公有派生)是類繼承中最常見派生方式。這樣就可以在派生類的成員函數中訪問基類中原有的非私有成員,并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論