C++ 中的数组声明、大小定义和销毁
Array declaration, size definition, and destruction in c++
所以我不确定这样做的正确方法是什么。我有一个名为 someClass 的类,其中包含一个整数数组的私有变量。在调用构造函数之前,不会定义大小。这是我的做法:
在某类中:
class someClass {
public:
someClass();
someClass(int size);
~someClass();
private:
int* array;
}
在某些类中.cpp:
someClass::someClass() {
array = new int[9];
}
someClass::someClass(int range) {
array = new int[range];
}
someClass::~someClass() {
delete[] array;
}
我是否正确声明/定义了数组?使用向量会好得多吗?
析构函数是否正确?
是的,您做得正确(部分),是的,最好使用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)
{}
您还应该添加复制 ctor 和复制赋值运算符。记住三法则!
相关文章:
- C++编程从外部文本文件定义数组大小
- 如何在子类中重新定义数组大小?
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用呢?
- 表达式必须具有常数值,变量不能用作定义数组大小的常数
- 在类中定义数组的方法和字段
- (C++)我的自定义数组无法初始化(编译错误)
- 重写自定义数组类的运算符/开始/结束
- 如何在 C++ 中定义数组数组
- 您可以在类初始化器列表中定义数组大小吗?
- 通过Overloading Operator []访问自定义数组包装器中的元素
- 为自定义数组实现迭代器
- 递归定义数组中的数据对齐和排序
- 如何从类中返回自定义数组项目并操纵其属性?C
- 如何使用类 .h 文件中的静态常量来定义数组的长度
- 使用类定义数组创建C++类
- C++自定义数组容器动态大小
- C++中使用什么类型来定义数组大小
- 在源文件中定义数组,然后在其他源文件中使用它
- C 编程从外部输入文件定义数组大小