提问人:Wikallou 提问时间:11/10/2022 更新时间:11/10/2022 访问量:131
复制构造函数 / 动态数组 / delete_scalar.cpp错误
Copy Constructor / Dynamic Array / delete_scalar.cpp Error
问:
我创建了一个程序,它输入一个整数的动态数组。我想添加一个复制构造函数,以便更好地了解其功能,但是总是在尝试运行程序时,Visual Studio 打开一个新选项卡并获得错误,所以如果有人遇到类似的问题,它会帮助我。delete_scalar.cpp
代码如下:
DynamicArray.h
#pragma once
class DynamicArray
{
private:
int* arr;
int capacity;
int number_of_elements;
public:
DynamicArray(int capacity = 1);
DynamicArray(const DynamicArray&);
~DynamicArray();
void add(DynamicArray* arr, int value);
void print(DynamicArray* arr);
};
DynamicArray.cpp
#include "DynamicArray.h"
#include <iostream>
DynamicArray::DynamicArray(int capacity): capacity(capacity),number_of_elements(0),arr(new int[capacity])
{}
DynamicArray::~DynamicArray()
{
delete[] this->arr;
this->arr = nullptr;
this->number_of_elements = 0;
this->capacity = 0;
}
DynamicArray::DynamicArray(const DynamicArray& other) : capacity(other.capacity),number_of_elements(other.number_of_elements),arr(new int[other.number_of_elements])
{
for (int i = 0; i < number_of_elements; i++)
{
this->arr[i] = other.arr[i];
}
}
main.cpp
int main()
{
DynamicArray obj(5);
DynamicArray obj2(5);
obj.add(&obj,22);
obj.add(&obj,12);
obj.add(&obj,18);
obj.add(&obj,11);
obj.print(&obj);
obj2=obj;
obj2.print(&obj2);
}
错误delete_scalar.cpp
_CRT_SECURITYCRITICAL_ATTRIBUTE
void __CRTDECL operator delete(void* const block) noexcept
{
#ifdef _DEBUG
_free_dbg(block, _UNKNOWN_BLOCK);
#else
free(block);
#endif
}
提前致谢!
此致敬意!
答: 暂无答案
评论
obj2=obj;
DynamicArray obj3(obj);
this->