运行结果及报错内容
#include <iostream>
using namespace std;
class Vector {
private:
int* nums;
int len;
public:
Vector(int = 1);
Vector(int*, int);
Vector(const Vector&);
~Vector();
int& operator [](int i) const;
Vector& operator=(const Vector&);
friend Vector operator +(const Vector&, const Vector&);
friend Vector operator -(const Vector&, const Vector&);
friend double operator *(const Vector&, const Vector&);
friend ostream& operator <<(ostream& output, const Vector&);
friend istream& operator >>(istream& input, Vector&);
};
Vector::Vector(int size) {
nums = new int[size];
for (int i = 0; i < size; i++) nums[i] = 0;
len = size;
}
Vector::Vector(int* temp, int size) {
len = size;
for (int i = 0; i < size; i++) nums[i] = temp[i];//此处报错
}
Vector::Vector(const Vector& temp) {
len = temp.len;
for (int i = 0; i < len; i++) nums[i] = temp.nums[i];
}
Vector::~Vector() {
len = 0;
delete[] nums;
}
int& Vector::operator[](int size)const {
return nums[size];
}
Vector& Vector::operator=(const Vector& temp) {
for (int i = 0; i < len; i++) nums[i] = temp.nums[i];
return *this;
}
Vector operator +(const Vector& A, const Vector& B) {
int size = A.len;
int* temp = new int[size];
for (int i = 0; i < A.len; i++) temp[i] = A.nums[i] + B.nums[i];
return Vector(temp, size);
}
Vector operator -(const Vector& A, const Vector& B) {
int size = A.len;
int* temp = new int[size];
for (int i = 0; i < size; i++) temp[i] = A.nums[i] - B.nums[i];
return Vector(temp, size);
}
double operator *(const Vector& A, const Vector& B) {
int ans = 0;
for (int i = 0; i < A.len; i++) ans += A.nums[i]*B.nums[i];
return ans;
}
ostream& operator <<(ostream& output, const Vector& A) {
for (int i = 0; i < A.len; i++) output << A[i] << " ";
output << endl;
return output;
}
istream& operator >>(istream& input, Vector& A) {
for (int i = 0; i < A.len; i++) {
input >> A.nums[i];
}
return input;
}
int main() {
int len; cout << "输入向量维数: "; cin >> len;
Vector A(len), B(len), C(len), D(len);
cin >> A >> B;
cout << A << B;
C = A + B;
cout << "执行A+B后,向量C为: " << C;
C = A - B;
cout << "执行A-B后,向量C为: " << C;
cout << "执行A*B后,结果为: " << A * B;
}
代码如上
报错:
引发了异常: 写入访问权限冲突。
this->nums 是 0x191113A。
运行结果:
输入向量维数: 2
1 2
2 1
1 2
2 1
执行A+B后,向量C为: 3 3
不知如何修改,求解