"新的Classname*[]"是什么意思?

Cos*_*ait 0 c++ arrays pointers

我有一节课:

class WorkerThread
{
public:
    unsigned virtual run()
    {
        return 0;
    }
};
Run Code Online (Sandbox Code Playgroud)

在标题中定义.现在在另一个类中,我创建了一个这种类型的对象:

WorkerThread **workerQueue;
Run Code Online (Sandbox Code Playgroud)

这实际上是一个指向指针的指针......好吧,直到现在都很好.
现在,我该怎么读这个:

workerQueue = new WorkerThread*[maxThreads];
Run Code Online (Sandbox Code Playgroud)

*ClassName(WorkerThread)和数组格式之后是什么意思?

Cha*_*had 8

它是一个WorkerThread指针数组的分配.

例如:

size_t maxThreads = 3;
WorkerThread** workerQueue = new WorkerThread*[maxThreads];
Run Code Online (Sandbox Code Playgroud)

workerQueue[0]是一个WorkerThread*,原样WorkerThread[1]WorkerThread[2].

这些指针目前尚未初始化.

稍后您可能会看到以下内容:

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

   //beginthreadex_, CreateThread, something....
}
Run Code Online (Sandbox Code Playgroud)

我会告诉你,所有这些原始指针只是内存泄漏等待发生,除非仔细处理.一种优选的方法是使用std::vector一些WorkerThread对象的智能指针.