gpt4 book ai didi

c++ - 使用运算符重载添加两个 vector

转载 作者:行者123 更新时间:2023-11-28 00:08:28 27 4
gpt4 key购买 nike

我有一个 Vectors 类,它有私有(private)动态数组。我只想添加两个 Vectors 对象,例如 A = A + B,但程序一直崩溃。

这是我类(class)的声明:

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;
}

这是我得到的错误:

enter image description here

最佳答案

我相信您需要一个 operator= 函数。你还没有实现它,所以编译器写了一个默认的,它做了错误的事情(因为这个类有一个指针)。很可能是在删除同一内存两次时发生崩溃。

参见 What is The Rule of Three?

关于c++ - 使用运算符重载添加两个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com