【发布时间】:2019-12-08 11:04:52
【问题描述】:
class fu
{
public:
int pub;
fu() { pub = 1; }
~fu() {
std::cout << pub << "end"<<std::endl;
}
};
fu& fub() {
fu a;
fu& re = a;
return a;
}
int main() {
std::cout << ++fub().pub;
}
输出:1 结束 \n 2
我预计引用会出错,因为函数中的变量已终止。但是,调用了析构函数并且 main 函数起作用了。参考指向什么?
【问题讨论】:
-
这能回答你的问题吗? Can a local variable's memory be accessed outside its scope?讲的是指针,但是引用的结果是一样的。
-
你所拥有的是未定义的行为。
标签: c++ class scope reference lifetime