1.前向宣告的好處
1)不必要的#include會增加編譯時間
2)混亂隨意的#include可能導致迴圈#include,可能會出現編譯錯誤
2.定義
可以宣告乙個類而不定義它。這個宣告有時候被成為前向宣告。不完全型別只能以有限方式使用,不能定義該型別的物件,不完全型別只能適用於:
a.定義指向型別的指標及引用。
b.用於宣告(而不是定義)使用該型別作為形參型別或返回型別的函式。
class
a;class
b;
**3.前向宣告的限制
1)不能定義前向宣告類的物件
2)可以定義指向這個型別的指標或引用
3)用於宣告使用該型別作為形參或者返回型別的函式。(成員函式不佔類物件的大小)**
4.例項
c++編譯器做的事情主要是:1.掃瞄符號;2.確定物件大小。
所以很多時候並不需要將類都include進來。
比如:
(1)由於所有物件型別的引用所占用的空間都是相同大的,所以c++編譯器很好確認物件大小(引用的大小???)。
class
string;
class sample
;
這裡只需要做乙個string的前向宣告就可以了,不需要#include
(2)由於所有型別的指標也是相同大小的。所以與(1)類似,也可以只做前向宣告就好。
(3)宣告成員函式的形參或者是返回型別,也可以利用前向宣告的性質。
class string;
class foo;
class sample
;
這裡,我根本沒有定義乙個foo類,但是還是可以這樣用,因為成員函式不佔類物件的大小,所以c++編譯器還是可以確定物件的大小(注:換句話說是否只要c++編譯器能確定物件大小即可)。
前向宣告的作用在於告訴編譯器這是乙個在別的地方定義的型別。這樣c++編譯器就能生成正確的符號表了。
c 中的前向宣告
前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...
C 中的前向宣告
前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...
c 中的前向宣告
1 不必要的 include 會增加編譯時間.2 混亂隨意的 include可能導致迴圈 include,可能出現編譯錯誤.可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete ty...