存储的结构和用C++编写的类在哪里?

Vad*_*dim 2 c# c++ stack struct class

在C#中,类存储在堆中,而结构存储在堆栈中.

在C++类和strucs中是否以相同的方式存储(假设我静态地创建我的类和结构,并且每个类或结构的成员都不是由new分配的)?

请使用下面的代码片段解释一下:

class B
{
int b;
}

class C
{
int c;
}

class A
{
B b;
C c;
int x;
}

struct SB
{
int sb;
}

struct SC
{
int sc;
}

struct SA
{
SB sb;
SC sc;
int x;
}

void main()
{
A a1;
A *a2 = new A;

SA sa1;
SA *sa2 = new SA;
}
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 6

结构的存储方式与存储类的方式没有(必要的)差异.事实上,C++中结构和类之间的唯一区别是,默认情况下,struct成员是公共的,而类成员是私有的.

与任何其他类型的对象一样,类或结构类型的对象具有存储持续时间,该持续时间由其创建方式决定.

在函数内声明的对象的生命周期限于封闭块; 这通常通过将其存储在堆栈上来实现.

在函数外部或使用static关键字声明的对象具有在整个程序执行期间延伸的生命周期; 这可以通过将其存储在数据段中来实现.

new操作员(或malloc()调用)分配的对象存在,直到它为deleted(或free()ed); 这些对象分配在"免费商店"中,有时非正式地称为"堆".

  • 你得到了这个:默认情况下,类成员是私有的,默认情况下struct成员是公共的,因此struct关键字保持与C的兼容性. (2认同)
  • 既然你喜欢在评论中如此迂腐,你应该在这个答案中遵循相同的内容.你应该说Freestore而不是Heap. (2认同)