最近在程式設計實踐課上重學C++,由於小組合作,自然就不是單純的一個人寫完代碼寫到一個文件里完事,所有最近接觸了一下多文件編程的邏輯。 首先,多文件編程主要是為了組內合作,將一個項目分解成耦合度低的多個部分,使他們獨立考慮,結合面向對象可以更好的分工明確,各自完成編碼任務 C++文件大致會按尾碼名分 ...
最近在程式設計實踐課上重學C++,由於小組合作,自然就不是單純的一個人寫完代碼寫到一個文件里完事,所有最近接觸了一下多文件編程的邏輯。
首先,多文件編程主要是為了組內合作,將一個項目分解成耦合度低的多個部分,使他們獨立考慮,結合面向對象可以更好的分工明確,各自完成編碼任務
C++文件大致會按尾碼名分為兩類:
.h
文件:用於常量的聲明,函數的聲明部分,類的聲明部分.cpp
文件:用於存放變數的聲明,函數的定義部分,類的實現部分
(但是由於貪吃蛇還是比較簡單,我並未做類的兩部分分離)
由於面向對象的特殊性,很多地方存在多個類之間的相互依賴,由於這種原因,我們的頭文件可能會出現重覆引入
為瞭解決這個問題,一個常見的方式是利用ifndef和define來避免重覆定義類之類的東西(clion採用這種方式讓我比較深刻理解了各種define的意義,之前競賽完全沒有這樣的意識)
另一個常見的方式是#pragma one
,用這個編譯指令,可以只控制引入文件一次,但由於這是一種編譯指令,所以移植性很差,與這相同的還有_Pragma("once")
這種寫法
另一個重要的方面就是命名空間(namespace)。這東西是用來避免兩個人的代碼命名出現重合的,現在小項目不太用得起來,後續應該會嘗試。