C 前置宣告詳解及例項

2022-10-04 01:06:12 字數 1517 閱讀 8846

c++ 前置宣告詳解及例項

一般的前置函式宣告

見過最多的前置函式宣告,基本格式**如下:

#include

using namespace std;

void fun(char ch, int *pvalue, double dvalue);

void main()

void fun(char ch, int *pvalue, double dvalue)

很好理解,不做贅述。

自定義型別的前置宣告

自定義型別的前置宣告,由於編譯器不知道型別的大小,所以不可以宣告型別的物件。只可以利用型別宣告指標和引用。

**如下:

/** 自定義型別前置宣告

*/#include www.cppcns.comam>

using namespace std;

class b;

class a

~a()

void funa()

};class b

~b()

void doanything()

};void main()

如上,利用前置型別的指標想呼叫其成員函式,會報編譯錯誤!那麼,腫麼辦?請看下文。

宣告和實現分離

**如下,宣告標頭檔案:

/** testforwarddeclar.h

*/#ifndef d_testforwarddeclar_h_

#define d_testforwarddeclar_h_

#include

class b; // 前置宣告自定義型別

class a

;class b

;#endif

**如下,定義檔案:

/** testforwarddeclar.cpp

*/#include "testforwarddeclar.h"

#include

a::a (b *pbpara)

: m_nint(100)

, m_nrint(m_nint)

, m_pint(null)

, m_pb(null)

, m_b((null == pbpara) ? (*m_pb) : (*pbpara))

a::~a()

void a::funa()

b::b (int n) : m_n(n)

b::~b()

void b::doanything()

**如下:測試檔案:

#include "testforwarddeclar.h"

程式設計客棧

void main()

編譯成功,執行結果是期望效果。

總結自定義型別前置宣告時,只可以利用型別名宣告指標和引用變數(謹記不可以宣告物件或newxmuoex 物件,均因為型別大小不確定,編譯器無能為力)。

若需要利用指標或引用呼叫前置型別的介面,必須按照宣告和實現分離的方式進行編碼。

本文標題: c++ 前置宣告詳解及例項

本文位址:

詳解C 前置宣告

前置宣告是c c 開發中比較常用的技巧,主要用在三種情形 前置宣告作用 根據其用途,前置宣告的主要作用為 前兩種用途好理解,第三種稍微複雜點,但卻是前置宣告最重要的用途。其解決類a包含類b,同時類b包含類a的依賴問題。迴圈依賴一般是設計層面的問題,可通過介面 引入輔助類等手段化解。前置宣告也能解決,...

C 前置宣告

特點 被宣告的類不用重新編譯,節省編譯時間 比如a包含乙個指向b的指標,b包含a的乙個例項,這種情況下,使用前置宣告。易錯的點 class date class task1 因為分配器為d分配記憶體的時候,必須要知道 d的大小 主要應用場景是兩個標頭檔案相互包含的場景,建議僅將前置宣告用於解決迴圈引...

C 前置宣告

一般的前置函式宣告 見過最多的前置函式宣告,基本格式 如下 1 include 2 using namespace std 34 void fun char ch,int pvalue,double dvalue 56 void main 714 15void fun char ch,int pva...