gpt4 book ai didi

c++ - 使用 std::optional 作为常规指针与使用 has_value() 和 value

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:56 25 4
gpt4 key购买 nike

std::optional 可以使用类似于普通指针的语法来访问其值,例如 .

std::optional<string> some_str;
if (some_str)
(*some_str).c_str();

但它还有两个函数,has_value()value() 以提供对其值的访问并检查该值是否存在。

std::optional<string> some_str;
if (some_str.has_value())
some_str.value().c_str();

我想知道这两个有什么区别是为了?
1. 更冗长
2.性能?
3. 更好的日志记录和调试? value() 会抛出异常。

最佳答案

这里有两个不同的东西。

首先,显式运算符 bool() constbool has_value() const。这些正是synonyms .他们的意思完全一样。使用您喜欢的任何一个。

其次,T& value()T& operator*()。这与 vector::at vs. vector::operator[] 相同.前者没有先决条件 - 它检查并抛出 - 后者有先决条件 - 如果可选被取消,它是未定义的行为。

关于c++ - 使用 std::optional 作为常规指针与使用 has_value() 和 value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56082568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com