基于本主题的结果
不捕获任何变量([] 内没有任何内容)的 lambda 可以转换为函数指针
我写了一个像这样的程序
void test1(){}
int main() {
auto test2 = [](){};
printf("%p\n%p\n", test1, &test1);
printf("%p\n%p", test2, &test2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是
0x561cac7d91a9
0x561cac7d91a9
0x7ffe9e565397
(零)
在https://www.programiz.com/cpp-programming/online-compiler/
那么 test2 存储了一个指向 lambda 函数的函数指针?
我的问题是存储 lambda 数据的对象 test2 没有自己的地址?
我认为这个 test2 应该有自己的地址。
存储 lambda 函数的对象是否有自己的地址?
是的,像 C++ 中的所有对象一样,变量test2也有一个唯一的地址。您可以通过打印&testuisng来看到这一点cout,如下所示:
int main() {
auto test2 = [](){};
std::cout << &test2; //prints address of test2
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述修改后的程序的输出为:
0x7ffe4d4b5fcf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |