gpt4 book ai didi

c++ - 按以下方式设置引用是否安全

转载 作者:行者123 更新时间:2023-11-28 03:07:54 25 4
gpt4 key购买 nike

谁能告诉我这是否安全且已定义:


class RefClass
{
public:
RefClass(int i) { this->i = i; }
int& GetRef() { return i; }
private:
int i;
};


RefClass rc(10);

int* refp;

{
refp = &rc.GetRef();
}

*refp = 20;

具体来说,我关心嵌套范围内返回引用的生命周期,以及它是否可以在该范围内被引用,然后在该范围解散后作为左值取消引用。

此代码在 VS2012 中按预期编译和运行,但这并不意味着它会在下一个版本中,所以我试图找到一个明确的答案。

最佳答案

是的,没关系。

返回的引用是临时的,持续到包含函数调用的语句结束。它在其生命周期内用于将 refp 设置为指向其目标 rc.i。之后不需要取消引用指针。

唯一的危险是对象可能被破坏,指针悬空:

int* refp;

{
RefClass rc(10);
refp = &rc.GetRef();
} // rc is destroyed here

*refp = 20; // BOOM!!!

关于c++ - 按以下方式设置引用是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com