【发布时间】:2019-12-04 18:57:24
【问题描述】:
这是一个非常快速的问题。我有以下代码:
struct integer {
int x;
int& ref() {
return x;
}
};
//main...
int* l = &integer{4}.ref();
std::cout << *l;
我的问题是:&integer{4}.ref() 不是右值,因为它是一个临时对象吗?我怎样才能有一个指向它的指针?它是未定义的行为吗?
【问题讨论】:
-
how can i have a pointer to it??-- 因为语法是合法的C++? -
指针指向
integer{4}.x,你可以直接询问它的地址,因为地址存在。但是在该语句之后取消引用指针是 UB,因为它是悬空的(它指向一个不再存在的对象)