亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

淺析VC++中的頭文件包含問題

2020-01-26 15:52:23
字體:
來源:轉載
供稿:網友

在一些大的工程中,可能會包含幾十個基礎類,免不了之間會互相引用(不滿足繼承關系,而是組合關系)。也就是需要互相聲明。好了,這時候會帶來一些混亂。如果處理得不好,會搞得一團糟,根據我的經驗,簡單談談自已的處理辦法:

編碼時,我們一般會盡量避免include頭文件,而是采用聲明 class XXX。但有時候還是必須用Include頭文件,那么,兩者的劃分在于什么呢?

應該是很明確的,但書上好像都少有提及。

首先:
我們要明白為什么要用聲明取代頭文件包含:對了,是為了避免無必要的重編譯(在頭文件發生變更時)。工程較大,低速機,或基礎類經常變更(不合理的設計吧),編譯速度還是會在意的,另外,更為重要的是,采用聲明可降低代碼(class)之間的藕合度,這也是面向對象設計的一大原則。

二:一般原則:
a. 頭文件中盡量少include, 如果可以簡單申明 class clsOld; 解決,那最好。減少沒有必要的include;
b. 實現文件中也要盡量少include,不要include沒有用到的頭文件。

三:那什么時候可以只是簡單聲明class clsOld呢?
簡單的說:不需要知道clsOld的內存布局的用法都可以(靜態成員除外),也就是講如果是指針或引用方式的都行。
比如:
clsOld * m_pOld;    //指針占4個字節長
clsOld & test(clsOld * pOld) {return *pOld};
一切OK。

四:什么時候不能簡單聲明class clsOld,必須include呢?
不滿足三的情況下:
比如:
clsOld m_Objold;  //不知道占據大小,必須要通過它的具體聲明來計算
原因很簡單,想想你要計算sizeof(classNew),但連clsOld的size都不知道,編譯器顯然會無能為力。

特殊情況:
int test() { return clsOld::m_sInt;}
靜態成員調用,想來應該是不需要知道內存布局的,但因為需要知道m_sInt是屬于clsOld命名空間的,如果只聲明class xxx顯然是不足以說明的,所以必須包含頭文件。

綜上所述,我有以下幾點建議:
1:
如果有共同相關依賴(必須include)的類,比如 A,B都依賴D 可以放在一起,然后直接 Include "d" 類的使用者只需關心與本類暴露出的相關類型,內部用到的類型不用去管(不用自已去include d)。這樣給出的class,調用者才更好用(不用去看代碼查找,是不是還需要包含其它頭文件)。

2:如果A類依賴D B類不依賴D,可以把它們分開兩個頭文件。各自Include。這樣可避免當D發生變化時,避免不必要重編譯。

3:類中盡量采用指針或引用方式調用其它類,這樣就可以只聲明class xxx了。并且這也符合資源最優利用,更利于使用多態。

-------------------------------
既然使用了包含文件,為什么還要在class CMainFrame前添加"class CViewerView;"等代碼?如果用包含文件代替它,行不行?  很多Visual C++書籍對這些問題避而不談,但實際上這是一個重要的問題。如果不能理解上述代碼,我們很可能為無法通過編譯而大傷腦筋。這些問題的出現是基于這樣的一些事實:在我們用標準C/C++設計程序時,有一個原則即兩個代碼文件不能相互包含,而且多次包含還會造成重復定義的錯誤。為了解決這個難題, Visual C++使用#pragma once來通知編譯器在生成時只包含(打開)一次,也就是說,在第一次#include之后,編譯器重新生成時不會再對這些包含文件進行包含(打開)和讀取,因此我們看到在用向導創建的所有類的頭文件中有#pragma once語句就不會覺得奇怪了。然而正是由于這個語句而造成了在第二次#include后編譯器無法正確識別所引用的類。因此,我們在相互包含時還需要加入類似class CViewerView這樣的語句來通知編譯器這個類是一個實際的調用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜色婷婷在线| 中文字幕少妇一区二区三区| 国产日韩在线看| 亚洲福利视频免费观看| 久久影院模特热| 久久精品国产视频| 日韩av免费在线| 国产精品视频网站| 91精品在线一区| 亚洲精品在线91| 久热99视频在线观看| 97国产一区二区精品久久呦| 成人激情视频网| 最近中文字幕日韩精品| 亚洲天堂色网站| 98精品在线视频| 一区二区三欧美| 国产欧美精品一区二区| 91国在线精品国内播放| 国产成人精品在线观看| 久久91超碰青草是什么| 久久在线免费视频| 国产精品最新在线观看| 亚洲大尺度美女在线| 久久久这里只有精品视频| 中文字幕国产精品| 色偷偷av一区二区三区| 欧美国产乱视频| 亚洲精品按摩视频| 亚洲国产91色在线| 国产精品免费网站| 日韩欧美在线字幕| 中文字幕亚洲综合久久筱田步美| 中文字幕精品一区二区精品| 国产精品自产拍在线观看中文| 成人福利视频网| 91精品视频在线看| 久久视频在线观看免费| 久久久久亚洲精品成人网小说| 亚洲第一网中文字幕| 国内久久久精品| 国产精品你懂得| 欧美日韩视频免费播放| 国产精品国产三级国产aⅴ浪潮| 国产欧美一区二区三区久久| 欧美亚洲一级片| 欧美精品videofree1080p| 欧美精品做受xxx性少妇| 91精品国产综合久久男男| 欧洲成人免费aa| 91在线观看免费高清| 亚洲一级黄色片| 69影院欧美专区视频| 国产在线精品成人一区二区三区| 日韩av在线网站| 国产一区二区香蕉| 中文字幕av一区二区三区谷原希美| 欧美日本啪啪无遮挡网站| 欧美一级bbbbb性bbbb喷潮片| 欧美成人激情在线| 黑人极品videos精品欧美裸| 欧美高清videos高潮hd| 亚洲第一精品夜夜躁人人爽| 国产成人精品视频在线观看| 97在线观看视频| 最近2019中文字幕一页二页| 亚洲天堂免费视频| 欧美极品少妇全裸体| 欧美激情女人20p| 欧美特黄级在线| 日韩电影中文字幕在线| 国产精品自拍网| 国产噜噜噜噜噜久久久久久久久| 亚洲国产毛片完整版| 精品国模在线视频| 欧美天天综合色影久久精品| 国产精品福利在线观看网址| 日本一本a高清免费不卡| 在线观看中文字幕亚洲| 亚洲天堂开心观看| 精品久久久一区二区| 国产欧美精品日韩| 国产精品亚洲第一区| 欧美影院成年免费版| 欧美大成色www永久网站婷| 午夜精品一区二区三区在线| 亚洲欧美国产日韩中文字幕| 色综合色综合久久综合频道88| 日韩欧美中文字幕在线播放| 亚洲日本中文字幕免费在线不卡| 91精品免费久久久久久久久| 亚洲free性xxxx护士白浆| 精品免费在线视频| 国产精品99免视看9| 久久青草精品视频免费观看| 91精品国产高清久久久久久| 精品国产欧美一区二区三区成人| 亚洲人午夜精品免费| 欧美激情视频免费观看| 久久伊人色综合| 久久久久免费精品国产| 亚洲热线99精品视频| 国产美女久久久| 国产精品丝袜白浆摸在线| 久久久人成影片一区二区三区观看| 国产免费一区二区三区在线能观看| 韩国19禁主播vip福利视频| 国产精品网址在线| 性欧美办公室18xxxxhd| 亚洲激情小视频| 91九色精品视频| 国产精品免费一区二区三区都可以| 国产精品久久久久久久久久| 日韩在线一区二区三区免费视频| 久久精品免费播放| 97视频在线观看免费高清完整版在线观看| 欧美一级视频免费在线观看| 精品人伦一区二区三区蜜桃免费| 亚洲视频在线免费看| 精品一区精品二区| 亚洲国产欧美在线成人app| 国产一区二区三区在线播放免费观看| 国产原创欧美精品| 精品一区二区电影| 97人人模人人爽人人喊中文字| 青草青草久热精品视频在线观看| 国产日本欧美一区二区三区在线| 国产亚洲一区二区在线| 上原亚衣av一区二区三区| 亚洲永久免费观看| 色偷偷综合社区| 亚洲精品福利资源站| 国产精品人成电影在线观看| 91精品国产免费久久久久久| 成人黄色片网站| 国内精品久久久久影院 日本资源| 国产一区二区三区在线视频| 国产在线精品一区免费香蕉| 国产日产欧美a一级在线| 中文字幕国产亚洲2019| 亚洲成人性视频| 欧美成人激情视频免费观看| 精品视频在线播放色网色视频| 亚洲人成在线观看网站高清| 亚洲人成电影网站色www| 久热精品视频在线| 亚洲国产日韩欧美在线动漫| 韩国精品美女www爽爽爽视频| 92福利视频午夜1000合集在线观看| 美女撒尿一区二区三区| 国产精品午夜视频| 欧美在线不卡区| 久久免费高清视频| 久久伊人免费视频| 日韩高清人体午夜| 久久精品久久久久久国产 免费| 亚州精品天堂中文字幕| 欧美视频在线看| 日韩精品极品视频免费观看| 国产精品永久免费| 97在线免费观看视频| 久久久亚洲欧洲日产国码aⅴ| 日韩一区二区三区xxxx| 久久亚洲精品中文字幕冲田杏梨|