在C++中创建或访问时,引用取消引用的NULL指针会产生UB



我正在尝试实现类似的代码

if (auto *ptr = get_obj_ptr(), &obj = *ptr; ptr)
{
// access obj here
}
else
// handle error without accessing ptr and obj

假设CCD_ 1可以返回到有效对象的有效指针或CCD_。这个代码在C++中合法吗?如果prt == NULL是未定义的行为,则访问obj,但仅定义NULL解引用引用是否也会导致UB?

是的,唯一的观点是舒适和风格的主题,但理论主题也是问题。也许还有其他优雅和UB-。无异常和升压解决方案?

这段代码在C++中合法吗?

不,这是不合法的。

只定义NULL解引用也会导致UB?

是。

也许还有其他优雅和UB-。无异常和升压解决方案?

一个优雅的解决方案:在检查null后绑定引用:

if (auto *ptr = get_obj_ptr())
{
auto& obj = *ptr; 
// access obj here

最新更新