基于本题的结果
我写过这样的程序
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;
}
以上修改后的程序输出为:
0x7ffe4d4b5fcf
关于c++ - 对象存储 lambda 函数是否有自己的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74359033/