带有三元运算符和nullptr的auto

我可以使用auto三元运算符的这种用法吗?

auto obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;

它在 Visual Studio 中编译,代码运行正常,但会不会有任何意想不到的副作用?或者,会auto一直在这里className*,我可以放松并编写这样的代码吗?或者,使用三元运算符,这样写更好吗?

className* obj = some_cond ? static_cast<className*>(baseClassObj) : nullptr;

回答

auto推导出分配给它的值的类型。三元运算符只能返回一种类型。 nullptr可隐式转换为任何指针类型,但没有指针类型可隐式转换为std::nullptr_t,因此在此示例中,三元运算符必须始终返回className*,因此auto将始终推导出为className*


以上是带有三元运算符和nullptr的auto的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>