在 C# 中,类存储在堆中,而结构存储在堆栈中。
在 C++ 中,类和结构是否以相同的方式存储(假设我静态创建我的类和结构,并且类或结构的每个成员都不是由 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;
}
最佳答案
结构的存储方式与类的存储方式没有(必要的)区别。事实上,C++ 中结构和类的唯一区别是结构成员默认是公共(public)的,而类成员默认是私有(private)的。
与任何其他类型的对象一样,类或结构类型的对象具有存储期限,这取决于它的创建方式。
在函数内声明的对象的生命周期仅限于封闭 block ;这通常是通过将其存储在堆栈中来实现的。
在函数外部声明的对象,或使用 static
关键字声明的对象,其生命周期贯穿程序的整个执行过程;这可以通过将其存储在数据段中来实现。
由 new
运算符(或 malloc()
调用)分配的对象一直存在,直到它被 delete
d(或 free( )
编辑);此类对象分配在“自由存储”中,有时非正式地称为“堆”。
关于c# - 用 C++ 编写的存储结构和类在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210143/