gpt4 book ai didi

c++ - 对象存储 lambda 函数是否有自己的地址?

转载 作者:行者123 更新时间:2023-12-05 01:49:14 24 4
gpt4 key购买 nike

基于本题的结果

A lambda which captures no variables (nothing inside the []'s) can be converted into a function pointer

我写过这样的程序

void test1(){}
int main() {
auto test2 = [](){};
printf("%p\n%p\n", test1, &test1);
printf("%p\n%p", test2, &test2);

return 0;
}

结果是

0x561cac7d91a9

0x561cac7d91a9

0x7ffe9e565397

(无)

关于 https://www.programiz.com/cpp-programming/online-compiler/

所以 test2 正在存储一个指向 lambda 函数的函数指针?

我的问题是存储 lambda 数据的对象 test2 没有自己的地址?

我觉得这个test2应该有自己的地址。

最佳答案

Does a object stores lambda function have it's own address?

是的,像 C++ 中的所有对象一样,变量 test2 也有一个唯一的地址。您可以通过打印 &test uisng cout 来看到这一点,如下所示:

int main() {
auto test2 = [](){};

std::cout << &test2; //prints address of test2
return 0;
}

Demo

以上修改后的程序输出为:

0x7ffe4d4b5fcf

关于c++ - 对象存储 lambda 函数是否有自己的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74359033/

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