我有一个Vectors
具有私有动态数组的类。我要做的就是添加两个Vectors
对象,例如A = A + B,但是程序不断崩溃。
这是我班的声明:
class Vectors
{
private:
int* vector;
public:
Vectors(int);
Vectors(Vectors&);
~Vectors();
Vectors operator+(Vectors&);
};
这是我的实现:
#include "Vectors.h"
#include "iostream"
using namespace std;
Vectors::Vectors(int value)
{
this->vector = new int[3];
for (auto i = 0; i < 3; i++)
{
vector[i] = 3;
}
}
Vectors::Vectors(Vectorsy& copy)
{
this->vector = new int[3];
for (auto i = 0; i < 3; i++)
{
vector[i] = copy.vector[i];
}
}
Vectors::~Vectors()
{
delete[] vector;
}
Vectors Vectors::operator+(Vectors& obj) // There is sth wrong here.
{
for (auto i = 0; i < 3; i++)
this->vector[i] += obj.vector[i];
return *this;
}
这是我得到的错误:
我相信您需要一个operator=
功能。您尚未实现它,因此编译器将编写一个默认的代码,该默认代码执行错误的操作(由于该类具有指针)。两次删除相同的内存时,很可能发生崩溃。
请参阅什么是三法则?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句