QThreads - 为什么在构造函数中分配内存而不是使用普通的 class 成员?

QThreads - Why allocate memory inside a constructor rather than having a normal class member?

http://doc.qt.io/qt-5/qthread.html

class Controller : public QObject
{
    Q_OBJECT
    QThread workerThread;
public:
    Controller() {
        Worker *worker = new Worker;
        worker->moveToThread(&workerThread);
        connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
        connect(this, &Controller::operate, worker, &Worker::doWork);
        connect(worker, &Worker::resultReady, this, &Controller::handleResults);
        workerThread.start();
    }

我的方式:

class Controller: public QObject
{
    Q_OBJECT
public:
    Worker  objWorker;
    QThread objQThread;

    Controller();
    ~Controller();

public slots:
    void receiveImage();
};

Controller::Controller()
{
    objWorker.moveToThread( &objQThread );

    connect( &objWorker, &Worker::imageReady, this, &Controller::receiveImage );

    objQThread.start();
}

他们的方法在某些方面比我的好吗?在哪种情况下应该首选哪个?

发件人:http://doc.qt.io/qt-5/qthread.html

From Qt 4.8 onwards, it is possible to deallocate objects that live in a thread that has just ended, by connecting the finished() signal to QObject::deleteLater().

这只能通过制作Worker的指针对象class并为其分配内存来实现。