例如,我有一个带有构造函数的类,该构造函数以整数数组作为参数:
A(int* array) : m_array(array) {}
我可以这样使用它:
int array[] = { ... }
A a(array);
或者像这样:
int* array = new int[10];
A a(array);
如果对象然后使用它的数组,它必须(或可能不是?)在析构函数中删除它(如果它是动态的)。但他怎么知道这个数组的内存是动态分配的呢?
最佳答案
你无法知道它是否是动态分配的,因为毕竟 int* array
是一个 int
指针,而不是数组。你不妨通过:
int i;
A a(&i);
正如您所想象的,如果您尝试删除[]
该数组,或者尝试访问 N > 0 的m_array[N]
,就会发生不好的事情。
所以你必须依赖调用者来做正确的事情;您无法验证或强制执行它。您所拥有的只是一个int
的地址。谁创建了该 int
,或者如何或是否有更多 int
跟随它,将是未知的。
如果您想要更安全,请使用std::vector
。这就是它的用途。
关于c++ - 类构造函数中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550450/