我想知道是否可以声明一个数组(此时未知的大小),作为类的私有成员,然后在类的构造函数中设置大小.例如:
class Test { int a[]; public: Test(int size); }; Test::Test(int size) { a[size]; // this is wrong, but what can i do here? }
这是可能的还是我应该使用动态数组?谢谢!
简答:否(数组的大小仅在编译时定义)完整
答案:
您可以使用向量来实现相同的结果:
class Test { std::vectora; public: Test(std::size_t size): a(size) {} };
不,这是不可能的.标头中的数组声明必须具有恒定大小的值.否则,像"sizeof"这样的结构不可能正常运行.您需要将数组声明为指针类型,并在构造函数中使用new [].例.
class Test { int *a; public: Test(int size) { a = new int[size]; } ~Test() { delete [] a; } private: Test(const Test& other); Test& operator=(const Test& other); };