我相信你正在寻找的是一个vector
类。它是一个连续的类似数组的存储结构(很好的stackoverflow 问题),也是 C 数组的 C++ 替代方案。
你可以用一个指针来做,但由于vector
它的大小是动态增长的,它并不那么重要。
这是您的示例中的一个示例:
#include <vector>
class foo{
private:
std::vector<int> *vecPointer;
public:
foo(int size){
vecPointer = new std::vector<int>(size, 0);
// 0 as default value, can be omitted
}
~foo(){
delete vecPointer;
}
}
另一种方法是,如果您只想保留内存,但在类初始化时实际上没有元素,则只保留int
内存而不是用具体值填充它。在这种情况下,构造函数看起来像:
foo::foo(int size){
vecPointer = new std::vector<int>();
vecPointer->reserve(size);
}
析构函数不会改变,并且在 内部class foo
,您可以使用 将对象添加到保留大小,并且您可以以完全相同的方式vecPointer->push_back(5)
添加更多对象(只有在此之后向量大小和它所占用的内存才会增长)。
另外,你真的想使用指针吗?你不必,你可以有一个法线向量:
#include <vector>
class foo{
private:
std::vector<int> vec;
public:
foo(int size){
vec.resize(size, 0); // it's initialized as empty here
// alternative, with reserve:
// vec.reserve(size);
}
~foo(){
// no deletion needed like this
}
}
这样,一切都得到了照顾,您不必记得删除。