c 前向宣告

2022-08-31 01:30:20 字數 988 閱讀 2187

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)

//

b.h#ifndef __b__h__

#define __b__h__#include

class a; //

這兒是前向宣告,宣告了類a

class

b ;#endif

view code

//

b.cpp

#include "

b.h"

#include

"a.h"//

要包含a.h

a b::getafromb()

void b::seta(b&a0)

view code

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類是乙個型別,但是這個型別的一些性質 比...