Mar 31 2008
表頭檔要不要?拿速度來換!
本文要提出的內容,是一個非常基礎的程式觀念:表頭檔 (Header Files) 與編譯依存關係的課題。雖然對於許多程式設計者來說,這個觀念技巧應該是相當基本而且必備的基礎知識,但在現實世界中,我卻時常看到許多人忽略了這個問題的重要性,因而造成專案開發流程中的重大災難。
來看看實際的範例。例如在專案中有一個 GameObject 類別,用來實作遊戲物件的相關操作行為:
// @ GameObject.h
#include < string >
class GameObject
{
public:
int GetType();
std::string& GetName();
private:
int m_iType;
std::string m_kName;
};
有了基礎的遊戲物件類別之後,自然會陸續建構並且實作出其他的類別。當 GameObject 需要使用或包含其他的類別時,可能會在類別中定義一個該類別的成員變數,以結合 GameObject 類別進行更複雜的操作行為。例如,可能會在 GameObject 類別中,加入一個 ComponentA 類別的物件定義遊戲物件的基本組件:
// @ GameObject.h
#include < string >
#include "ComponentA.h"
class GameObject
{
public:
int GetType();
std::string& GetName();
ComponentA& GetComponentA();
private:
int m_iType;
std::string m_kName;
ComponentA m_kCompA;
};
