1. 程式人生 > >C++模組化程式設計

C++模組化程式設計

C++程式模組化程式設計

1、.h檔案中定義類(對成員函式只包括宣告部分),對應的.cpp檔案主要是對類的成員函式的定義。

2、main函式中定義物件,然後通過物件引用類的成員以實現某功能。

3、將標頭檔案新增到.cpp檔案比新增到.h檔案的好處是可以避免重複包含,如果不是標頭檔案要用到某檔案的內容的話,還是把.h檔案放到.cpp中更好

4、也可以某個類在自己的cpp檔案中定義全域性物件(變數),然後在對應.h檔案中把它宣告為外部的,如直接在.h檔案中定義的話,該標頭檔案被不同檔案包含時會報重定義的錯誤。(好像可以通過靜態資料型別來達到同樣效果)

5、.h檔案中定義了外部全域性變數(如extern int x

)時記得要包含對應標頭檔案,注意在.cpp中包含了而在.h中未包含,編譯器可能不提示出錯,只在編譯時才報錯(養成好習慣就不會犯這樣的錯誤)。

自己都看不懂當初要表達什麼!!!

6、#pragma comment(lib, "IMPPlatformSDK.lib")  //若在專案屬性的附加庫中沒有新增IMPPlatformSDK.lib,則需要此語句(注意附加庫目錄必須指定)

7、//extern CResourceTree ResourceTree;//在ResourceTree.h中聲明瞭為extern型別的後,在此處就無需宣告為extern---(有待複習)

8、看過一部分程式瞭解到,C++程式設計的風格是儘量把一類操作都封裝成類,如可以把很多格式轉化封裝成一個類,以方便後面的使用。

9、自己在一個檔案定義的結構體型別需要在其他檔案出現的時候,可以在其他檔案的.cpp檔案中重寫一下結構體定義,不可放到.h檔案中,不然會出現從定義的錯誤。

10、.h檔案中宣告一個全域性變數的話,若該檔案被多次包含,則會報重定義的錯誤,若是把它宣告為靜態的話就不會。但是在標頭檔案中定義結構體的話(沒有同時定義結構體變數),被多檔案包含時是不會重定義的,應為只是定義型別,未定義具體變數,系統不為其分配記憶體空間。

11、注意:自己把某塊功能函式封裝成類的話可以,如該類只被另外一個類B使用,可以在B的宣告中定義類A的物件,若類A需被多檔案(或不是其他類的檔案)使用,則需在類A自己的標頭檔案定義靜態全域性物件,或在類

A的.cpp檔案中定義全域性物件,在.h中將其宣告為extern型別。

12、對於MFC程式,系統自動為主對話方塊類添加了物件,而自己寫程式的過程中每一個自己封裝的類需自己手動添物件,新增方法是在對應.cpp檔案中定義全域性物件,在.h中將其宣告為extern型別。也可以在某一個函式中直接新增某個類的區域性物件。

13、在函式裡定義的物件是區域性物件,函式結束後物件自動被析構。

14、定義類的資料成員與定義區域性變數的區別:當定義區域性物件時資料成員便成為區域性的,定義全域性物件時,資料成員便成為全域性的。注意:不可以定義兩個名字一樣的全域性物件,但可以定義兩個名字一樣的區域性物件,一個檔案裡可以同時有全域性物件和區域性物件(問:重名了是什麼情況:重名了應該區域性的和全域性的互不干擾)定義靜態成員的好處在於對於某一個類整個程式不管定義多少個物件(不管是全域性的還是區域性的)該靜態成員只有一個(問不同類的靜態成員重名影響嗎:應該不影響,因為在類外靜態成員要通過類名(或物件名)訪問)。

15、C++程式模組化程式設計時當出現變數的重複定義問題時看看能否將變數定義成靜態的來解決。

16、類A中定義了類B的一個物件b,則類A的成員函式中對物件b的操作具體是對應於類A的那個物件的操作,要看是A的那個哪個物件呼叫其成員函式。

17、自己寫的標頭檔案包含方式為 #include”student.h”,系統的用#include<x.h>

18、注意新建工程過程中第一次新增標頭檔案和原始檔時後綴名不可出錯。否則只能移除再新增而不能通過重新命名改字尾。

19、注意:標頭檔案之間的包含只需考慮不要有全域性變數(物件)的重複定義問題,所以最好不要在標頭檔案中定義全域性變數(物件),但是為什麼類的成員不會出現重定義的報錯是因為類的成員在定義的時候是不分配記憶體空間的,只有在定義物件的時候才分配。

20#include"vlc/vlc.h"//該標頭檔案的意思是在自己新增的附加庫目錄下還有一個vlc資料夾,而我們需要的vlc.h檔案就在vlc資料夾下。

21自己平時寫程式碼的時候要注意C++程式的封裝性,同一類操作封裝成一個類。

22、注意:當一個解決方案裡面同時有動態庫工程和控制檯工程時,而控制檯工程要用到動態庫工程生成的dll時,需為控制檯工程新增依賴項。

C++程式模組化程式設計

1、.h檔案中定義類(對成員函式只包括宣告部分),對應的.cpp檔案主要是對類的成員函式的定義。

2、main函式中定義物件,然後通過物件引用類的成員以實現某功能。

3、將標頭檔案新增到.cpp檔案比新增到.h檔案的好處是可以避免重複包含,如果不是標頭檔案要用到某檔案的內容的話,還是把標頭檔案新增到.cpp中更好。

4、也可以某個類在自己的cpp檔案中定義全域性物件(變數),然後在對應.h檔案中把它宣告為外部的,如直接在.h檔案中定義的話,該標頭檔案被不同檔案包含時會報重定義的錯誤。(通過靜態資料型別也可以達到同樣效果)

5、.h檔案中宣告一個全域性變數的話,若該檔案被多次包含,則會報重定義的錯誤,若是把它宣告為靜態的話就不會。但是在標頭檔案中定義結構體的話(沒有同時定義結構體變數),被多檔案包含時是不會重定義的,應為只是定義型別,未定義具體變數,系統不為其分配記憶體空間。

6、想定義一個全域性物件(變數),一般有兩種方法

1>C語言常用方法:可以通過在.cpp檔案中定義一個全域性物件(變數),然後在對應的.h檔案中把該變數或物件宣告外部型別來實現,如extern int x  

2>C++語言常用方法:在定義某個類時把某個資料成員定義為static型別即可。

7、#pragma comment(lib, "IMPPlatformSDK.lib")  //若在專案屬性的附加庫中沒有新增IMPPlatformSDK.lib,則需要此語句(注意附加庫目錄必須指定)

8、看過一部分程式瞭解到,C++程式設計的風格是儘量把一類操作都封裝成類,如可以把很多格式轉化封裝成一個類,以方便後面的使用。

9、注意:自己把某塊功能函式封裝成類的話可以,如該類只被另外一個類B使用,可以在B的宣告中定義類A的物件,若類A需被多檔案(或不是其他類的檔案)使用,則需在類A自己的標頭檔案(在類外)定義靜態全域性物件,或在類A.cpp檔案中定義全域性物件,在.h中將其宣告為extern型別。

10、在函式裡定義的物件是區域性物件,函式結束後物件自動被析構。

11、定義類的資料成員與定義區域性變數的區別:當定義區域性物件時資料成員便成為區域性的,定義全域性物件時,資料成員便成為全域性的。注意:不可以定義兩個名字一樣的全域性物件,但可以定義兩個名字一樣的區域性物件,一個函式裡可以同時有全域性物件和區域性物件(重名了應該區域性的和全域性的互不干擾)定義靜態成員的好處在於對於某一個類整個程式不管定義多少個物件(不管是全域性的還是區域性的)該靜態成員只有一個(問,不同類的靜態成員重名影響嗎:應該不影響,因為在類外靜態成員要通過類名(或物件名)訪問)。

12A中定義了類B的一個物件b,則類A成員函式中對物件b的操作具體是對應於類A哪個物件的操作,要看是A哪個物件呼叫其成員函式。

13、自己寫的標頭檔案包含方式為 #include”student.h”,系統的用#include<x.h>

14、注意新建工程過程中第一次新增標頭檔案和原始檔時後綴名不可出錯。否則只能移除再新增而不能通過重新命名改字尾。

15、注意:標頭檔案之間的包含只需考慮不要有全域性變數(物件)的重複定義問題,所以最好不要在標頭檔案中定義全域性變數(物件),類的成員不會出現重定義的報錯是因為類的成員在定義的時候是不分配記憶體空間的,只有在定義物件的時候才分配。

16#include"vlc/vlc.h"//該標頭檔案的意思是在自己新增的附加庫目錄下還有一個vlc資料夾,而我們需要的vlc.h檔案就在vlc資料夾下。

17自己平時寫程式碼的時候要注意C++程式的封裝性,同一類操作封裝成一個類。

18、注意:當一個解決方案裡面同時有動態庫工程和控制檯工程時,而控制檯工程要用到動態庫工程生成的dll時,需為控制檯工程新增依賴項。

注:由於筆者水平有限,若博文中存在錯誤或不周之處,還望各位大牛多多指教,有新的經驗的時候也會及時更新本博文,謝謝!