c++ - << C++ 运算符除了移位之外还有什么作用?

标签 c++ operators

我在 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 << parentindentations << 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.

那么,哪里 TQList 中元素的类型,即 TreeItem* ,这个重载 operator<<引用 T并将其添加到列表中。

这应该与用于插入输出流的隐喻一致,例如 std::cout << "Hello!"; .也就是说,它通常被认为是一个插入运算符。另一方面,operator>>通常用于提取。然而,它实际上只是在这里用作语法糖。

关于c++ - << C++ 运算符除了移位之外还有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510414/

相关文章:

c++ - 未调用析构函数时销毁类成员

查找数组大小的 C++ 模板/宏 "function"

java - Java 中 & 和 && 有什么区别?

c - 三点运算符 "..."用于初始化数组

javascript - 这个检查如何与 JS 中的运算符优先级一起工作

c++ ->?= 运算符是什么意思?

c++ - Net-SNMP - 在新的 MIB 模块中编译,而不编译整个 SNMP 代理

c++ - 自定义缓冲区的字节顺序

c++ - 如何在 emacs 中使用公司模式、irony 后端和 irony header

c++ - 模板类可以有纯虚函数和虚运算符吗?