QJsonValueRef vs. QJsonValue
QJsonValueRef vs. QJsonValue
在Qt的JSON实现中,在QJsonObject
类中,有两个操作符的实现(文档在这里):
QJsonValue QJsonObject::operator[](const QString & key) const;
QJsonValueRef QJsonObject::operator[](const QString & key);
首先,返回QJsonValueRef
与返回QJsonValue
相比有什么优势?其次,如果我只说root['time']
,其中root
是QJsonObject
,将返回哪个值?
你应该避免在提交的问题中提出多个问题。话虽如此,以下是你的问题的答案:
返回key值的引用。
返回值的类型是QJsonValueRef, QJsonArray和QJsonObject的辅助类。当您获得QJsonValueRef类型的对象时,您可以将其作为对QJsonValue的引用来使用。如果对其进行赋值,则赋值将应用于QJsonArray或QJsonObject中获得引用的元素。
这意味着,您可以在返回值上调用方法,而无需在代码中显式创建临时对象,就像c++中的引用工作方式一样。
至于第二个子问题,它取决于根对象是什么。如果它是const对象,则不能调用第二个非const版本,因为这会违反const正确性。注意末尾的const:
> QJsonValue QJsonObject::operator[](const QString & key) const;
^^^^^
用于可变的,也就是。非const对象,可以同时调用这两个版本,但默认情况下会调用第二个版本。然而,使用一些const强制转换,这可以改变。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- QJsonValueRef vs. QJsonValue