所以我不确定这样做的正确方法是什么。我有一个名为someClass的类,其中一个私有变量是一个整数数组。在调用构造函数之前,不会定义大小。我是这样做的:
在someClass.h中:
class someClass {
public:
someClass();
someClass(int size);
~someClass();
private:
int* array;
}
在someClass.cpp中:
someClass::someClass() {
array = new int[9];
}
someClass::someClass(int range) {
array = new int[range];
}
someClass::~someClass() {
delete[] array;
}
我是否正确声明/定义了数组?使用矢量会好得多吗?
析构函数是否正确?
答案 0 :(得分:2)
是的,你正确地(部分地)这样做了,是的,最好使用std::vector
(因为“部分”部分)。
“部分”是现在您必须为您的类提供复制构造函数和复制赋值运算符(为了提高效率,您可能还需要移动构造函数和移动赋值运算符);如果你不这样做,如果你复制了课程,你将会得到双重删除错误。
std::vector
封装了所有这些,所以这就是你应该喜欢的原因。更不用说它具有很好的功能,如迭代器。
你的课程看起来像这样:
class someClass {
public:
someClass();
someClass(int size);
//no destructor necessary!
private:
std::vector<int> array;
}
someClass::someClass()
{} // nothing special needed
someClass::someClass(int range) : array(range)
{}
答案 1 :(得分:2)
您还应该添加copy ctor和copy assignment operator。请记住rule of three!