gpt4 book ai didi

C++类成员存储

转载 作者:太空狗 更新时间:2023-10-29 19:58:13 27 4
gpt4 key购买 nike

我刚收到一个关于 c++ 类成员存储的问题。

例如,我有这样一个类:

class MyClass1{
int a;
int b[4];
int c;
}

在主函数中:

int main(){
MyClass1 class1;
MyClass1* class_ptr1= new MyClass1();
}

那么成员a,b,c是怎么存储的呢?对于class1,我认为所有成员都在堆栈中分配了一个空间,即使是数组b。

那么class_ptr1呢?貌似是动态分配的,成员也是动态分配的吗,还以为不是指针呢。

非常感谢。

非常感谢您的回复。现在我明白了,一旦类被动态分配,它的所有成员也被动态分配。在那种情况下,一旦我使用完该类(class),我是否需要做任何事情来释放它们?我的意思是,是否可以:

delete(class_ptr1);

或者我需要先释放它的成员。

最佳答案

您的问题来自您不太了解 C++ 中的类/结构的事实。当你声明一个类时:

class MyClass1{
int a;
int b[4];
int c;
};

此类的任何实例都将是一个连续的内存块,大小等于sizeof(MyClass1),其中每个字段都有该 block 开头的一些偏移量。如果您考虑并理解它,您的问题的答案将是显而易见的。

关于C++类成员存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24389908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com