我在 Qt 示例中看到了一个 C++ 片段,其中包含一些 << 运算符。我知道位移位,但很明显这些还有其他作用:
在此链接中:http://qt-project.org/doc/qt-4.8/itemviews-simpletreemodel-treemodel-cpp.html有一些代码如下所示:
void TreeModel::setupModelData(const QStringList &lines, TreeItem *parent)
{
QList<TreeItem*> parents;
QList<int> indentations;
parents << parent;
indentations << 0;
// ...
操作符在最后两行做了什么:parents << parent 和indentations << 0
我用 Google 搜索了一下,但一直登陆谈论轮类运算符(operator)的页面。
这是否与特殊形式的赋值有关?
最佳答案
找到答案的最简单方法是查看运算符应用于哪些类型。左操作数是 QList<TreeItem*>
右操作数是 TreeItem*
.这应该会提示您查找 the documentation for QList
.
在文档中,您会找到 the specification for operator<<
:
QList<T> & QList::operator<< ( const T & value )
This is an overloaded function.
Appends value to the list.
那么,哪里 T
是 QList
中元素的类型,即 TreeItem*
,这个重载 operator<<
引用 T
并将其添加到列表中。
这应该与用于插入输出流的隐喻一致,例如 std::cout << "Hello!";
.也就是说,它通常被认为是一个插入运算符。另一方面,operator>>
通常用于提取。然而,它实际上只是在这里用作语法糖。
关于c++ - << C++ 运算符除了移位之外还有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510414/