gpt4 book ai didi

c++ - 对取消引用的 NULL 指针的引用是否会在 C++ 中创建或访问时产生 UB

转载 作者:行者123 更新时间:2023-12-02 09:59:13 25 4
gpt4 key购买 nike

我正在尝试实现这样的代码

if (auto *ptr = get_obj_ptr(), &obj = *ptr; ptr)
{
// access obj here
}
else
// handle error without accessing ptr and obj
假设 get_obj_ptr()可以返回指向有效对象的有效指针或 NULL .这段代码在 C++ 中合法吗?访问 obj如果 prt == NULL是未定义的行为,但是仅定义 NULL 取消引用的引用也会导致 UB 吗?
是的,唯一的一点是舒适和风格的主题,但理论主题也是物质。也许还有其他优雅和UB-。异常和无升压的解决方案?

最佳答案

Is this code legal in C++?


不,这是不合法的。

just defining NULL-dereferenced reference also result into UB?


是的。

Maybe there is any other elegant and UB-. exception-, and boost-free solution?


一个优雅的解决方案:在检查空值后绑定(bind)引用:
if (auto *ptr = get_obj_ptr())
{
auto& obj = *ptr;
// access obj here

关于c++ - 对取消引用的 NULL 指针的引用是否会在 C++ 中创建或访问时产生 UB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63565071/

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