C++类中不能定义自身类类型成员变量
類聲明:?
class dog; //類的聲明
類定義:?
class dog{ //類的定義
};
當(dāng)用實例化一個類的對象時,編譯器會根據(jù)類的定義來分配相應(yīng)的存儲空間?。
也就是說,在創(chuàng)建對象前,一定要有完整的類定義,這樣編譯器才能正確的計算所需空間。?
那么我們來看如下代碼:
class dog{?
dog tt; //error, ‘tt’ uses undefined class ‘dog’
};
上述代碼中,由于dog還沒有定義結(jié)束,在內(nèi)部定義一個dog類型的對象時,編譯器無法知道應(yīng)該為tt分配多少內(nèi)存空間,因此會報注釋中的錯誤。
我們再看下面一段代碼:
class dog{?
dog *Zhlu; //ok?
dog& SKII; //ok?
};
在類定義時,定義指向自身類型的指針或引用作為內(nèi)部成員沒有問題,由于指針和引用所占存儲空間大小與類型無關(guān),所以編譯器可以計算所需分配空間,所以正確。
這個跟鏈表定義一樣,
typedef struct LNode{
????ElemType data;
????struct LNode *next;
}LNode,*LinkList;
盡管鏈表節(jié)點類型還沒有定義結(jié)束,但是編譯器無需知道*next類型。
————————————————
版權(quán)聲明:本文為CSDN博主「ayoung_go」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/laoqiuge/article/details/82021789
總結(jié)
以上是生活随笔為你收集整理的C++类中不能定义自身类类型成员变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】类的声明
- 下一篇: 类中定义自身类的对象