h或 hpp用於類定義

2021-07-27 15:40:33 字數 606 閱讀 3149

1、一般來說,*.h裡面只有宣告,沒有實現,而*.hpp裡宣告實現都有,後者可以減少.cpp的數量。

2、*.h裡面可以有using   namespace   std,而*.hpp裡則無。

3、不可包含全域性物件和全域性函式。

由於hpp本質上是作為.h被呼叫者include,所以當hpp檔案中存在全域性物件或者全域性函式,而該hpp被多個呼叫者include時,將在鏈結時導致符號重定義錯誤。要避免這種情況,需要去除全域性物件,將全域性函式封裝為類的靜態方法。

4、類之間不可迴圈呼叫。

在.h和.cpp的場景中,當兩個類或者多個類之間有迴圈呼叫關係時,只要預先在標頭檔案做被呼叫類的宣告即可,如下:

class

b; class

a;5、不可使用靜態成員。

靜態成員的使用限制在於如果類含有靜態成員,則在hpp中必需加入靜態成員初始化**,當該hpp被多個文件include時,將產生符號重定義錯誤。唯一的例外是const static整型成員,因為在vs2003中,該型別允許在定義時初始化,如:

class a;

js定義類或物件

工廠方式 var ocar new object ocar.color red ocar.doors 4 ocar.mpg 23 ocar.showcar function 可能需要建立多個car物件,所以可以封裝在乙個函式中,見 function createcar view code 但是,這樣...

自定義的互斥量類,可以用於執行緒或程序的同步

ifndef mutex h define mutex h include class cmutex cmutex public void lock while dwresult wait object 0 void unlock private static void debug msg lpct...

自定義結構或類的比較

定義普通函式 1 include 2 include 3 using namespace std 4struct act 9bool lessact const act a1,const act a2 12int main 定義成員函式 在函式內部定義 或者 再在排序時候使用less 或者great...