1.前向宣告:可以宣告乙個類而不定義它。這個宣告,被稱為前向宣告(forward declaration)。在宣告之後,定義之前,這個類是乙個不完全型別(incompete type),即已知它是乙個類型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完全型別只能用於定義指向該型別的指標及引用,或者用於宣告(而不是定義)使用該型別作為形參型別或返回型別的函式。
2.為什麼需要前向宣告? 第一,眾所周知,避免標頭檔案的迴圈引用,解決兩種類型別互相使用的問題。第二,就是避免引入標頭檔案,可以節省編譯時間。
3.應用舉例:
//a.h#ifndef __a__h__
#define __a__h__#include
class b; //
這兒是前向宣告,宣告了類b
classa ;
#endif
//a.cpp
#include "
a.h"
#include
"b.h"//
要包含b.h
b a::getbfroma()
void a::setb(b&b0)
//view codeb.h#ifndef __b__h__
#define __b__h__#include
class a; //
這兒是前向宣告,宣告了類a
class
b ;#endif
//view codeb.cpp
#include "
b.h"
#include
"a.h"//
要包含a.h
a b::getafromb()
void b::seta(b&a0)
c 前向宣告
對類a和類b 1 a用到了b的型別,則b要在a之前宣告。如果此時b又用到了a,則可以在a的完整定義前,前向宣告b 2 a的方法用的了b的方法,則a的方法的實現應該在b的方法實現之後。3 若a.op 用到了b.op 且b.op 又用到了a.op 形成了死鎖,此時可借助第三個類,即中介者模式 4 所有兩...
C 前向宣告
前向宣告 可以宣告乙個類而不定義它。這個宣告,有時候被稱為前向宣告 forward declaration 在宣告之後,定義之前,類screen是乙個不完全型別 incompete type 即已知screen是乙個型別,但不知道包含哪些成員。不完全型別只能以有限方式使用,不能定義該型別的物件,不完...
C 類前向宣告
在乙個群內看到的訊息,關於類的前向宣告 宣告乙個foo類,這個宣告,有時候也叫做前向宣告 forward declaration 在宣告完這個foo類之後,定義完這個foo類之前的時期,foo類是乙個不完全的型別 incomplete type 也就是說foo類是乙個型別,但是這個型別的一些性質 比...