c++中的前向聲明用法解讀
c++前向聲明用法
前向聲明
可以聲明一個類而不定義它。這個聲明,有時候被稱為前向聲明(forward declaration)。
在聲明之后,定義之前,類Screen是一個不完全類型(incompete type),即已知Screen是一個類型,但不知道包含哪些成員。
不完全類型只能以有限方式使用,不能定義該類型的對象,不完全類型只能用于定義指向該類型的指針及引用,或者用于聲明(而不是定義)使用該類型作為形參類型或返回類型的函數(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 會增加編譯時間.
混亂隨意的#include可能導致循環(huán)#include,可能出現(xiàn)編譯錯誤.
C++前向聲明注意事項
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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++自帶的sort函數(shù)如何對vector容器元素進行排序
這篇文章主要介紹了C++自帶的sort函數(shù)如何對vector容器元素進行排序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
C語言全面細致講解單雙精度float與double的使用方法
C語言中小數(shù)的數(shù)據(jù)類型為 float 或 double:float 稱為單精度浮點數(shù),double 稱為雙精度浮點數(shù)。不像整數(shù),小數(shù)的長度始終是固定的,float 占用4個字節(jié),double 占用8個字節(jié)2022-05-05
C語言 fseek(f,0,SEEK_SET)函數(shù)案例詳解
這篇文章主要介紹了C語言 fseek(f,0,SEEK_SET)函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08

