在 Qt 的 JSON 实现中,在QJsonObject类中,运算符有两种实现(文档here):
QJsonValue QJsonObject::operator[](const QString & key) const;
QJsonValueRef QJsonObject::operator[](const QString & key);
Run Code Online (Sandbox Code Playgroud)
首先,与返回QJsonValueRef相比,返回有QJsonValue什么优势?其次,该值如果我只是说的一样会被退回root['time'],其中root的一个QJsonObject?
您应该避免在提交的问题中提出多个问题。话虽如此,以下是您问题的答案:
返回对键值的引用。
返回值的类型为QJsonValueRef,是QJsonArray和QJsonObject的辅助类。当您获得 QJsonValueRef 类型的对象时,您可以像使用 QJsonValue 的引用一样使用它。如果您对其进行赋值,则该赋值将应用于您从中获取引用的 QJsonArray 或 QJsonObject 中的元素。
这意味着,您可以在返回值上调用方法,而无需在代码中显式创建临时对象,就像引用在 C++ 中的工作方式一样。
至于第二个子问题,取决于根对象是什么。如果它是 const 对象,则无法调用第二个(非 const 版本),因为这会违反 const 正确性。请注意最后的 const:
> QJsonValue QJsonObject::operator[](const QString & key) const;
^^^^^
Run Code Online (Sandbox Code Playgroud)
对于可变的,又名。非常量对象,您可以同时调用两者,但默认情况下将调用第二个版本。然而,通过一些常量转换,这可以改变。
| 归档时间: |
|
| 查看次数: |
5053 次 |
| 最近记录: |