我正在尝试实现类似的代码
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