gpt4 book ai didi

c++ - 如果通过new创建对象,成员函数的局部变量在哪里创建?

转载 作者:太空狗 更新时间:2023-10-29 23:32:01 24 4
gpt4 key购买 nike

Class A
{
int a;
int get_a()
{
int d;
return a;
}
};

A* obj_a_ptr = new A;
int c = A->get_a();

int d 内存分配在哪里,是在堆中还是在堆栈中?

最佳答案

成员函数与自由函数没有太大区别,它们只是隐式地获取一个this 指针作为第一个参数。所以你的成员函数或多或少等同于(让我们忘记你的 A 中没有任何东西实际上是可访问的,因为它都是 private)

int get_a(A* obj)
{
int d;
return obj->a;
}

我希望这已经回答了您的问题。 obj 是否通过 new 分配对 d 是否在堆栈上没有影响。

关于c++ - 如果通过new创建对象,成员函数的局部变量在哪里创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57308605/

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