我知道這個問題可能有很多不同的方式,但我加入我自己的,因爲這仍然不清楚。參考 - sizeof是否會返回真實的內存大小?
考慮以下代碼:
long double q = 1.2;
long double &p = q;
cout << sizeof(p) << endl;`
long double
是我的機器上的12個字節,並且代碼的輸出作爲預期12,因爲作爲標準表示:
當施加到基準或引用類型,結果是引用類型的大小爲 。 (ISO C++ $ 5.3.3/2)
但你最有可能都知道,參考實現是免費的,因此,作爲標準又說:
它是不確定是否不參考需要存儲(3.7)。
如此看來,明天我可以拿出我自己的參考實現,它需要200個字節,並確保該sizeof
運算符返回正確的對象大小(而不是返回這將是我參考的真正實現大小)
所以我的問題其實是非常簡單的:
我們可以依靠sizeof
操作時,它含有,具體而言,附圖成員返回一個類的實際內存佔用?
你意識到採用碰巧是一個引用的變量的sizeof和帶有一個非靜態數據成員的* type *的sizeof是一個引用有很大的區別,對嗎? –
我甚至都不明白這個問題。你問你是否可以依靠sizeof告訴你正確的大小?是。當然可以。 –
你確實這樣做*因此,看來明天我可以想出我自己的參考實現,它需要200個字節並確保sizeof運算符返回正確的對象大小。*您必須使自己的編譯器正確嗎? – NathanOliver