0

我试图找到 Qt 的实现QLinkedList::operator+( const QLinkedList<T> &list ),但我无法理解 Qt 源代码。这是 Qt 4.8.4 的一部分:

我在 .h 中找到了声明:

QLinkedList<T> operator+(const QLinkedList<T> &l) const;

但在 .cpp 中,我看到的是:

/*! \fn QLinkedList<T> QLinkedList::operator+(const QLinkedList<T> &other) const

    Returns a list that contains all the items in this list followed
    by all the items in the \a other list.

    \sa operator+=()
*/

定义在哪里?Qt 使用什么组织?

4

2 回答 2

2

如果不仔细看,实现似乎就在其中src/corelib/tools/qlinkedlist.h(您可以在此处查看此文件:http: //qt.gitorious.org/qt/qt/blobs/4.8/src/corelib/tools/qlinkedlist.h)。

特别是,大多数函数都在文件顶部附近的一两行中定义(我链接的文件中的第 78 到 255 行)。这些正在使用一些更长的函数来完成工作(其中相当一部分不能通过公共 Qt API 访问),这些函数在我链接的文件的第 258 行到第 516 行中定义。

因为 QLinkedList 是一个模板,所以将实现完全放在标题中是有意义的(事实上,你“不能”[我松散地使用这个术语]将实现放在 C++ 文件中)。有关其工作原理的更深入解释,请参阅此问题:为什么模板只能在头文件中实现?.

您提到的特定功能,QLinkedList::operator+(const QLinkedList<T> &list)在我链接的文件的第 511 行定义。

于 2013-06-21T17:20:50.393 回答
0

的定义QLinkedList<T>::operator+(const QLinkedList<T>& l)也在qlinkedlist.h底部。

这是定义:

template <typename T>
QLinkedList<T> QLinkedList<T>::operator+(const QLinkedList<T> &l) const
{
    QLinkedList<T> n = *this;
    n += l;
    return n;
}

来源:http: //qt.gitorious.org/qt/qt/blobs/v4.8.4/src/corelib/tools/qlinkedlist.h

于 2013-06-21T17:22:38.900 回答