c++中的前向聲明用法解讀
c++前向聲明用法
前向聲明
可以聲明一個(gè)類而不定義它。這個(gè)聲明,有時(shí)候被稱為前向聲明(forward declaration)。
在聲明之后,定義之前,類Screen是一個(gè)不完全類型(incompete type),即已知Screen是一個(gè)類型,但不知道包含哪些成員。
不完全類型只能以有限方式使用,不能定義該類型的對(duì)象,不完全類型只能用于定義指向該類型的指針及引用,或者用于聲明(而不是定義)使用該類型作為形參類型或返回類型的函數(shù)。
類的前向聲明之適用于指針和引用的定義,如果是普通類類型就得使用include了。
class A;
class B
{
? public:
? A* m_a; //(不能A m_a)
}
#include "A.h"
class B
{
? public:
? A* m_a; //(或者A m_a)
}前向聲明好處是
不必要的#include 會(huì)增加編譯時(shí)間.
混亂隨意的#include可能導(dǎo)致循環(huán)#include,可能出現(xiàn)編譯錯(cuò)誤.
C++前向聲明注意事項(xiàng)
typedef struct tag_guid
{
?? ?ULONGLONG utime;
?? ?ULONGLONG umac;
}tpguid;
class A
{
private:
?? ?int m_teset1;
};
//其他文件中的前向聲明,注意結(jié)構(gòu)體和類的區(qū)別
typedef struct tag_guid tpguid;
class A;
//使用,注意使用前向聲明的成員必須是指針
class B
{
private:
?? ?tpguid* ? ?m_guid;
?? ?A* ? ? ? ? m_a;
};總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
opencv3/C++ 實(shí)現(xiàn)SURF特征檢測(cè)
今天小編就為大家分享一篇opencv3/C++ 實(shí)現(xiàn)SURF特征檢測(cè),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序
這篇文章主要介紹了C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
C++詳細(xì)分析lambda表達(dá)式的本質(zhì)
Lambda表達(dá)式是現(xiàn)代C++在C ++ 11和更高版本中的一個(gè)新的語法糖 ,在C++11、C++14、C++17和C++20中Lambda表達(dá)的內(nèi)容還在不斷更新。 lambda表達(dá)式(也稱為lambda函數(shù))是在調(diào)用或作為函數(shù)參數(shù)傳遞的位置處定義匿名函數(shù)對(duì)象的便捷方法2022-06-06
C語言全面細(xì)致講解單雙精度float與double的使用方法
C語言中小數(shù)的數(shù)據(jù)類型為 float 或 double:float 稱為單精度浮點(diǎn)數(shù),double 稱為雙精度浮點(diǎn)數(shù)。不像整數(shù),小數(shù)的長(zhǎng)度始終是固定的,float 占用4個(gè)字節(jié),double 占用8個(gè)字節(jié)2022-05-05
C語言 fseek(f,0,SEEK_SET)函數(shù)案例詳解
這篇文章主要介紹了C語言 fseek(f,0,SEEK_SET)函數(shù)案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

