这个问题涉及到C++中的动态内存分配和数组操作。在C++中,可以使用new
和delete
操作符来动态分配和释放内存。对于包含可变大小数组的类,可以使用动态内存分配来实现数组的大小可变化。
以下是一个简单的示例,展示了如何在C++中使用动态内存分配来实现可变大小数组的类:
#include<iostream>
class DynamicArray {
public:
DynamicArray(int size) {
data = new int[size];
this->size = size;
}
~DynamicArray() {
delete[] data;
}
void resize(int newSize) {
int* newData = new int[newSize];
for (int i = 0; i < std::min(size, newSize); i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
size = newSize;
}
int& operator[](int index) {
return data[index];
}
int size;
private:
int* data;
};
int main() {
DynamicArray array(5);
for (int i = 0; i< array.size; i++) {
array[i] = i;
}
array.resize(10);
for (int i = 0; i< array.size; i++) {
std::cout<< array[i] << " ";
}
array.resize(3);
for (int i = 0; i< array.size; i++) {
std::cout<< array[i] << " ";
}
return 0;
}
在这个示例中,DynamicArray
类使用new
和delete
操作符来动态分配和释放内存。resize
方法可以改变数组的大小,同时保留原有数据。
需要注意的是,在使用动态内存分配时,必须要注意内存泄漏和野指针等问题,以避免程序出现异常或崩溃。
领取专属 10元无门槛券
手把手带您无忧上云