宣告只是告訴編譯器有這麼一個變數,但是沒有為它分配空間;定義則是為該變數分配空間。
比如:
class B; //類B的宣告
class A{
//..............................
B * ptr_B;.
};
class B{ //類B的定義
//....................
擴充套件資料
關於標頭檔案包含類定義的說明如下:
類的定義是具有內部連結特性的,即它不是宣告。
不能在同一編譯單元(即不在一個cpp檔案中)重複出現,但是它具有內部連結,(所謂內部連結指的是該名稱對於所在編譯單元是區域性的,在連結時不會與其他編譯單元中同樣的名稱產生命名衝突),所以類如果要在單個編譯單元之外使用它必須被定義在一個頭檔案中。
用struct宣告的類,如果對其成員不作private或public的宣告,系統會將其預設為public(公有的),如果想分別指定私有和公用成員,則應用private或public作顯示宣告。
而用class宣告的類,如果不作private或public的宣告,系統將其成員預設為private(私有的),在使用時也可以自己用顯示宣告改變。
宣告只是告訴編譯器有這麼一個變數,但是沒有為它分配空間;定義則是為該變數分配空間。
比如:
class B; //類B的宣告
class A{
//..............................
B * ptr_B;.
};
class B{ //類B的定義
//....................
};
擴充套件資料
關於標頭檔案包含類定義的說明如下:
類的定義是具有內部連結特性的,即它不是宣告。
不能在同一編譯單元(即不在一個cpp檔案中)重複出現,但是它具有內部連結,(所謂內部連結指的是該名稱對於所在編譯單元是區域性的,在連結時不會與其他編譯單元中同樣的名稱產生命名衝突),所以類如果要在單個編譯單元之外使用它必須被定義在一個頭檔案中。
用struct宣告的類,如果對其成員不作private或public的宣告,系統會將其預設為public(公有的),如果想分別指定私有和公用成員,則應用private或public作顯示宣告。
而用class宣告的類,如果不作private或public的宣告,系統將其成員預設為private(私有的),在使用時也可以自己用顯示宣告改變。