qt构造函数中的parent

workerthread.h

#ifndef WORKERTHREAD_H
#define WORKERTHREAD_H

#include <QThread>
class WorkerThread : public QThread
{
    Q_OBJECT
public:
    WorkerThread(QObject *parent = 0);

protected:
    void run();

signals:
    void done();
};

#endif // WORKERTHREAD_H

workerthread.cc

#include "workerthread.h"

WorkerThread::WorkerThread(QObject *parent) : QThread(parent){

}

void WorkerThread::run(){
    for(int i = 0; i < 100000000; i++);
    emit done();
}

其中

QObject *parent = 0;

只是声明构造函数中的参数类型,在这里可以写成

WorkerThread(QObject*);
// 或者
WorkerThread(QObject* parent);

均可通过编译。

WorkerThread::WorkerThread(QObject *parent) : QThread(parent){
}

调用QThread带有QObject*形参的构造函数,将WorkerThread中的parent指针初始化QThread构造函数中的参数。即派生类WorkerThread初始化:先调用父类QThread的构造函数(基类构造函数),先初始化QThread,再初始化WorkerThread。

// TODO java刚正式入C++,不知道理解对不对,待改

你可能感兴趣的:(qt构造函数中的parent)