这里的空悬指针哪里来的?
如下代码:
const Thing* last_accessed_thing;
void access(const Thing& t) {
// ...
last_accessed_thing = &t;
}
extern Thing get_a_thing();
void f() {
access(get_a_thing());
}
请问为何last_accessed_thing会变成空悬指针?为何get_a_thing会产生临时对象并被access()摧毁?
按照我的理解,access参数是个引用参数,直接取传入参数的地址,并不会产生临时对象。这样t的地址就是get_a_thing()的地址,last_accessed_thing就是get_a_thing()的地址,然而get_a_thing()并没有产生临时对象阿。