C++ “新类名*[]”是什么意思?

C++ “新类名*[]”是什么意思?,c++,arrays,pointers,C++,Arrays,Pointers,我有一门课: class WorkerThread { public: unsigned virtual run() { return 0; } }; 在标题中定义。现在,在另一个类中,我创建了这种类型的对象: WorkerThread **workerQueue; 这实际上是指向指针的指针。。。好的,到现在为止一切都很好。 现在,我该如何解读: workerQueue = new WorkerThread*[maxThreads]; 类名Worke

我有一门课:

class WorkerThread
{
public:
    unsigned virtual run()
    {
        return 0;
    }
};
在标题中定义。现在,在另一个类中,我创建了这种类型的对象:

WorkerThread **workerQueue;
这实际上是指向指针的指针。。。好的,到现在为止一切都很好。 现在,我该如何解读:

workerQueue = new WorkerThread*[maxThreads];

类名WorkerThread和数组格式后面的*是什么意思?

它是WorkerThread指针数组的分配

例如:

size_t maxThreads = 3;
WorkerThread** workerQueue = new WorkerThread*[maxThreads];
workerQueue[0]是WorkerThread*,WorkerThread[1]和WorkerThread[2]也是如此

这些指针目前尚未初始化

稍后您可能会看到类似的内容:

for(size_t x = 0; x < maxThreads; ++x)
{
   workerQueue[x] = new WorkerThread(...);

   //beginthreadex_, CreateThread, something....
}

我会告诉你,所有这些原始指针都只是等待发生的内存泄漏,除非小心处理。首选的方法是使用std::vector指向WorkerThread对象的一些智能指针。

也许这会使理解更清晰一些:

typedef WorkerThread* PointerToWorkerThread;

PointerToWorkerThread *workerQueue;

workerQueue = new PointerToWorkerThread[maxThreads];
WorkerThread*[maxThreads]。现在清楚多了?