背景:我不太了解記憶體位置,既不了解零大小物件的作業原理,也不了解如何操作它們。
由于沒有非靜態資料成員的標準布局型別別的基類子物件的大小為零(源 1),我希望在以下代碼中struct B具有零大小的基類子物件
struct A{};
struct B:A{};
int main(){A a; B b;}
這兩個a和b物件有一個1個位元組的大小,但在草案的說(source_2):
零大小的非位域子物件的地址是該子物件的完整物件占用的未指定存盤位元組的地址。
那么基類子物件的地址就是被占用的一個未指定位元組的地址b,但它只有1個位元組,所以b和它的基類子物件共享同一個地址?如果我沒有遺漏任何東西并且結論是正確的,那么在“指向”時如何處理零大小的子物件?
uj5u.com熱心網友回復:
那么基類子物件的地址就是b所占用的一個未指定位元組的地址,但是它只有1個位元組,所以b和它的基類子物件共享同一個地址?
是的。
如果我沒有遺漏任何東西并且結論是正確的,那么在“指向”時如何處理零大小的子物件?
指標的值是(子)物件的地址。與非零大小的(子)物件相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360368.html
上一篇:試圖理解陣列C 的初始化
下一篇:為什么這個指標是8個位元組?
