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]。现在清楚多了?