gpt4 book ai didi

c++ - 关于 C++ 无效引用,创建或使用会使程序格式错误吗?

转载 作者:太空狗 更新时间:2023-10-29 20:58:33 24 4
gpt4 key购买 nike

请看这段代码:

std::deque<BIG> bigs {};
// add some BIGs in the deque

BIG& last_BIG { bigs.front() };
f(last_BIG);
bigs.pop_front();
g();

pop_front 调用后引用 last_BIG 无效,这足以使程序格式错误吗?换句话说,我是否必须将 last_BIG 放在较小的范围内?

当然使用 last_BIG 后弹出是未定义的。

最佳答案

不,拥有无效引用或无效指针本身不会使您的程序无效。在它失效后使用它肯定是未定义的,但创建它本身并不是问题。

这类似于创建悬挂指针,不同之处在于指针提供了更多使它们无效的方法:

int *a = new int;
delete a;

此时 a 是一个无效指针,就像在你的代码中 pop_front 之后 last_BIG 是一个无效引用一样。这没问题,只要您不解除对无效指针的引用或访问无效引用。

关于c++ - 关于 C++ 无效引用,创建或使用会使程序格式错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381127/

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