如何分配这个数组?

Asl*_*986 0 c++

我有两个选择:

class X{
int* x;
int size = ...;
void create() { 
    x = new int[size];
    use();
    delete [] x;
}
void use() {//use array}
};
Run Code Online (Sandbox Code Playgroud)

要么:

class X{
int size = ...;
void create(){ 
    int x[size];
    use(x);
}
void use(int arg[]) {//use arg}
}; 
Run Code Online (Sandbox Code Playgroud)

哪个更好?

Luc*_*ore 8

选项3更好,使用std::vector.

class X{
    std::vector<int> x;
    int size; // = ...; <-- the "=" part is illegal in C++03
    void create() { 
        x.resize(size);
        use();
    } 
};
Run Code Online (Sandbox Code Playgroud)

此外,您的第二个代码段是非法的,C++不支持VLA.