struct X { const int n; };
union U { X x; float f; };
void tong() {
U u = {{ 1 }};
u.f = 5.f;
X *p = new (&u.x) X {2};
}
{{}}
是做什麼用的? 是否需要書寫 - (&u.x)
?結構和聯盟
struct X { const int n; };
union U { X x; float f; };
void tong() {
U u = {{ 1 }};
u.f = 5.f;
X *p = new (&u.x) X {2};
}
{{}}
是做什麼用的? 是否需要書寫 - (&u.x)
?結構和聯盟
new (&u.x) X {2}
是一種「放置新的」語法。它不分配內存並使用現有地址&u.x
。
你可以隨便寫,而不是
u.x = {2};
X *p = &u.x;
分配給'u.x'的問題是'x'有一個'const'成員。 –
@ user7585238聯盟的第一個方括號,結構的第二個方括號。這是早些時候發現的。 – Zefick
http://en.cppreference.com/w/cpp/language/aggregate_initialization http://en.cppreference.com/w/cpp/language/new – LogicStuff
'{{1}}'是包含結構的聯合的常量初始化方法。外部的'{}'代表聯合,內部的'{}'代表結構。所以'{{1}}'裏面的'1'將'n'設置爲1. – lurker
@lurker我把它放在一個答案中。這正是OP正在尋找的。 – skypjack