具有三元运算符和 nullptr 的 auto
auto with ternary operator and nullptr
我可以将 auto
与三元运算符一起使用吗?
auto obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;
编译在Visual Studio,代码运行正常,但会不会有什么意想不到的副作用?或者,这里的 auto
会一直是 className*
并且我可以放松并编写这样的代码吗?或者,用三元运算符,这样写比较好?
className* obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;
auto
推导出分配给它的值的类型。三元运算符只能return一种类型。 nullptr
可隐式转换为任何指针类型,但没有指针类型可隐式转换为 std::nullptr_t
,因此在此示例中,三元运算符必须始终 return className*
,因此 auto
将始终推断为 className*
.
我可以将 auto
与三元运算符一起使用吗?
auto obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;
编译在Visual Studio,代码运行正常,但会不会有什么意想不到的副作用?或者,这里的 auto
会一直是 className*
并且我可以放松并编写这样的代码吗?或者,用三元运算符,这样写比较好?
className* obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;
auto
推导出分配给它的值的类型。三元运算符只能return一种类型。 nullptr
可隐式转换为任何指针类型,但没有指针类型可隐式转换为 std::nullptr_t
,因此在此示例中,三元运算符必须始终 return className*
,因此 auto
将始终推断为 className*
.