簡體   English   中英

C ++中的匿名類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM