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)文章
C++ OpenCV學(xué)習(xí)之圖像金字塔與圖像融合詳解
圖像金字塔分為兩種:高斯金字塔和拉普拉斯金字塔。圖像金字塔在保持細(xì)節(jié)的條件下進(jìn)行圖像融合等多尺度編輯操作非常有用。本文將利用圖像金字塔實(shí)現(xiàn)圖像融合,需要的可以參考一下2022-03-03C++實(shí)現(xiàn)進(jìn)程間通信(IPC)的終極指南
進(jìn)程間通信(IPC,Inter-Process Communication),指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法,下面小編來和大家深入介紹一下C++實(shí)現(xiàn)進(jìn)程間通信(IPC)的相關(guān)方法吧2025-04-04VC++簡(jiǎn)單實(shí)現(xiàn)關(guān)機(jī)、重啟計(jì)算機(jī)實(shí)例代碼
這篇文章主要介紹了VC++簡(jiǎn)單實(shí)現(xiàn)關(guān)機(jī)、重啟計(jì)算機(jī)實(shí)例代碼,很實(shí)用的功能,需要的朋友可以參考下2014-07-07C語(yǔ)言實(shí)現(xiàn)求最大公約數(shù)的三種方法
最大公因數(shù),也稱最大公約數(shù)、最大公因子,指兩個(gè)或多個(gè)整數(shù)共有約數(shù)中最大的一個(gè)。本文將為大家介紹三種方法來實(shí)現(xiàn)求解兩個(gè)正整數(shù)的最大公約數(shù),需要的可以參考一下2021-12-12