使用for循环c ++声明一个对象数组

Kee*_*elx 1 c++ arrays syntax declaration object

好的.所以我已经声明了一个对象数组,并且我已经使用以下代码手动定义了它们:

Object* objects[] =
{
    new Object(/*constructor parameters*/),
    new Object(/*constructor parameters*/)
}; 
Run Code Online (Sandbox Code Playgroud)

无论如何使用某种循环(最好是for循环)来声明这些?就像是:

Object* objects[] =
{
    for(int i=0; i<20; /*number of objects*/ i++)
    {
        new Object(/*constructor parameters*/);
    }
}; 
Run Code Online (Sandbox Code Playgroud)

但是有正确的语法?

fre*_*low 9

我强烈建议使用标准库容器而不是数组和指针:

#include <vector>

std::vector<Object> objects;

// ...

void inside_some_function()
{
    objects.reserve(20);
    for (int i = 0; i < 20; ++i)
    {
        objects.push_back(Object( /* constructor parameters */ ));
    }
}
Run Code Online (Sandbox Code Playgroud)

这提供了异常安全性并减少了堆上的压力.


Tim*_*per 7

Object* objects[20];

for(int i=0; i<20; /*number of objects*/ i++)
{
    objects[i] = new Object(/*constructor parameters*/);
}
Run Code Online (Sandbox Code Playgroud)