Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt源代码的组织方式_C++_Qt_Qt4 - Fatal编程技术网

C++ Qt源代码的组织方式

C++ Qt源代码的组织方式,c++,qt,qt4,C++,Qt,Qt4,我试图找到QLinkedList::operator+(const-QLinkedList&list)的Qt实现,但我无法理解Qt源代码。这是Qt 4.8.4的一部分: 我在.h: QLinkedList操作符+(常量QLinkedList&l)常量 但在.cpp中,我看到的是: /*! \fn QLinkedList<T> QLinkedList::operator+(const QLinkedList<T> &other) const Returns

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

我在.h:

QLinkedList操作符+(常量QLinkedList&l)常量

但在.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+=()
*/
/*\fn QLinkedList QLinkedList::运算符+(常量QLinkedList和其他)常量
返回包含此列表中所有项目的列表
通过\a其他列表中的所有项目。
\sa运算符+=()
*/

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

如果不仔细查看,实现似乎位于
src/corelib/tools/qlinkedlist.h
(您可以在此处查看此文件:)

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

因为qLink表是模板,实现完全在头中是有意义的(事实上,你不能)[我使用术语松散地把实现放在C++文件中)。有关如何工作的更深入解释,请参阅以下问题:


您提到的特定函数,
QLinkedList::operator+(const-QLinkedList&list)
在我链接的文件的第511行定义。

QLinkedList::operator+(const-QLinkedList&l)
的定义也在底部的
QLinkedList.h

这就是定义:

template <typename T>
QLinkedList<T> QLinkedList<T>::operator+(const QLinkedList<T> &l) const
{
    QLinkedList<T> n = *this;
    n += l;
    return n;
}
模板
QLinkedList QLinkedList::运算符+(常量QLinkedList&l)常量
{
QLinkedList n=*这个;
n+=l;
返回n;
}
资料来源: