Based on the result of this topic
I have written a program like
void test1(){}
int main() {
auto test2 = [](){};
printf("%p\n%p\n", test1, &test1);
printf("%p\n%p", test2, &test2);
return 0;
}
the result are
0x561cac7d91a9
0x561cac7d91a9
0x7ffe9e565397
(nil)
on https://www.programiz.com/cpp-programming/online-compiler/
So the test2 is storing a function pointer to the lambda function?
and my question is that object test2, which stores the lambda data, not have its own address?
I thought this test2 should have its own address.
CodePudding user response:
Does a object stores lambda function have it's own address?
Yes, like all objects in C the variable test2
also has a unique address. You can see this by printing &test
uisng cout
as shown below:
int main() {
auto test2 = [](){};
std::cout << &test2; //prints address of test2
return 0;
}
The output of the above modified program is:
0x7ffe4d4b5fcf