[英]Anonymous classes in c++
對於我的項目,我正在使用C ++中的匿名類,並且想知道它們在內存中的分配位置。
我很確定它將在堆上分配,但是我想知道是否還有其他人有更詳細的信息。
如前所述, 類沒有分配到任何地方。 可以通過幾種方式分配對象 (即匿名類的實例):
例如,作為另一個對象的子對象:
struct S
{
struct {
int x, y;
} p;
};
或與類定義一起
struct
{
float x, y;
} p;
或使用decltype
:
struct S
{
struct {
int x, y;
} p;
};
void g (decltype (S::p)) {}
decltype (S::p) *f ()
{
auto p = new decltype (S::p);
g(*p);
return p;
}
如果匿名類是另一個類或結構的一部分,則它將與周圍的類或結構一起分配,無論是在堆上還是在堆棧上。
如果匿名類是全局變量,則將其與其他全局變量一起存儲。
如果匿名類是局部變量,則將其與定義該函數的其他局部變量一起存儲在堆棧中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.