2013-04-13 70 views
7

根據C++標準:C++標準佈局和參考

標準佈局類是一類:

都具有一個類型的沒有非靜態數據成員是非準則性佈局類(或這種類型的數組)或引用。

什麼屬性引用的(一個或多個)防止參照成員的類被包含在一個標準的佈局類的定義是什麼?

+0

你假定這樣的屬性需要存在嗎?不必有... – Yakk

+0

「預防」是一個強烈的字眼。從一個角度來看,引用只是給編譯器一個很好的藉口,把該結構作爲一個抽象的數據類型,而不是一個。存儲佈局規範。參考文獻不需要有任何*自己的存儲*。 – jthill

回答

11

一個標準佈局類都是關於在內存中爲特定類型定義明確的佈局。在C++中,引用不是對象,因此沒有能夠在一個良好定義的方式通過,即使實施,將通常必須有某種對他們實施的具體存儲的符合規範的程序訪問的任何存儲。

因此,在參考成員必須具有標準佈局的情況下,沒有任何意義。

有在提到這對C++內存模型的部分標準的非規範性注:

[注:語言的各種功能,如引用和虛函數,可能會涉及額外的內存位置,程序無法訪問但由實施管理。末端注]

+0

感謝您的好回答:這非常有意義。 – TRISAbits