为什么我不能使用nullptr
而不是nullopt
?为什么{}
像nullopt
一样翻译?
最佳答案
optional<T>
不是T
的指针,它是一个要么
T
要么什么都不是。您不能像指针和引用一样具有“悬挂的optional
”或任何其他类型的“无效”值。 nullptr
是一个对象,可以将其转换为任何指针类型的值。 nullopt
是一个对象,可以将其转换为任何optional
类型的值。 {}
是(在期望值的上下文中)表示“默认构造类型为
T
的对象,其中T
是从上下文中推断出的某种类型。如果T
是指针类型,则将等于nullptr
。如果T
是optional
类型,则将等于nullopt
。如果T
是一个算术类型,它将比较等于0
。如果T
是标准容器类型之一,它将比较等于该类型的其他空容器。关于c++ - nullptr,{}和nullopt之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47791737/