gpt4 book ai didi

c++ - 本地类变量位置

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:48 27 4
gpt4 key购买 nike

如果一个类实例化它在堆栈上的所有局部变量会发生什么(即:int i;//堆栈上的一个整数int *p;//指向一个 int) 而类本身在堆上实例化?类(class)成员在哪里?这是一个例子:

class A  {
public:
int a, b; //These are instantiated on the stack, if the line were written outside a class definition.
A(int _a, int _b) {
a = _a;
b = _b;
}
};

现在,如果我们像这样实例化 A:

#include <iostream>
A* classA = new A(1,2);
int main(void) {
std::cout << classA.a << "\t" << classA.b << endl;
return 0;
}

classA.aclassA.b 在哪里?它们在程序堆栈上吗?是否像 classA 那样自动放入堆中?

在大多数情况下这不是问题,我不认为,但了解...可能会有所帮助

最佳答案

int a, b; //These are instantiated on the stack,

不,这些没有在堆栈上实例化。成员变量是实例数据结构的一部分,因此与类实例分配在同一内存块中。只有当类实例在堆栈上时,实例字段也在那里。

关于c++ - 本地类变量位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43173466/

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