只能將包含一個屬性的類轉換爲屬性類型嗎?將單個屬性類轉換爲屬性類型
本例打印1
如預期。但它能保證工作嗎?
class A {
private:
int x = 1;
};
int main()
{
A a;
cout << *((int*)&a) << endl; // (1)
cout << *(int*)(((char*)&a)+offsetof(A, x)) << endl; // (2) //requires x to be public
return 0;
}
編輯:
還是有另一種方式,而不修改訪問a.x?
不,it's不保證d。對齊/填充etc.etc ....但請參閱http://www.cplusplus.com/reference/cstddef/offsetof/ – deviantfan
所以這樣更好? '*(int *)(((char *)&a)+ offsetof(A,x))' – WaeCo
編譯器是否允許優化'x',因爲它的未使用? – Caramiriel