【重载运算符】
本人刚学,,很是愚钝啊。。想了好久还是不知道。。求解啊。。应该是加法重载的不对。。
#include<iostream>
#include<iomanip>
using namespace std;
class Vector
{
public:
Vector();
Vector( int );
Vector( Vector &v );
~Vector();
Vector operator+ ( Vector & );
Vector operator- ( Vector & );
Vector operator* ( Vector & );
Vector operator/ ( Vector & );
Vector &operator= ( Vector & );
friend ostream & operator<< ( ostream &, Vector & );
friend istream & operator>> ( istream &, Vector & );
double * V;
int len;
};
Vector::Vector()
{
V = NULL;
len = 0;
}
Vector::Vector( int a )
{
len = a;
V = new double[len];
/*for( int i=0; i<len;i++ )
V[i] = 0;*/
}
Vector::Vector( Vector &v )
{
len = v.len;
if( V != NULL )
delete []V;
V = new double[len];
for( int i=0; i<len; i++ )
V[i] = v.V[i];
}
Vector::~Vector()
{
delete []V;
V = NULL;
len = 0;
}
Vector Vector::operator+ ( Vector &v )
{
if( len != v.len )
{
cout << "These two Vectors can't be calculated together\n";
exit(0);
}
Vector temp( len );
for( int i=0; i<len; i++ )
temp.V[i] = V[i] + v.V[i];
return temp;
}
Vector Vector::operator-( Vector &v )
{
if( len != v.len )
{
cout << "These two Vectors can't be calculated together\n";
exit(0);
}
Vector temp( v.len );
for( int i=0; i<len; i ++ )
temp.V[i] = V[i] - v.V[i];
return temp;
}
Vector Vector::operator*( Vector &v )
{
if( len != v.len )
{
cout << "These two Vectors can't be calculated together\n";
exit(0);
}
Vector temp( v.len );
for( int i=0; i<len; i ++ )
temp.V[i] = V[i] * v.V[i];
return temp;
}
Vector Vector::operator/( Vector &v )
{
if( len != v.len )
{
cout << "These two Vectors can't be calculated together\n";
exit(0);
}
Vector temp( v.len );
for( int i=0; i<len; i ++ )
temp.V[i] = V[i] / v.V[i];
return temp;
}
Vector& Vector::operator=( Vector &v )
{
if( len != v.len )
{
cout << "These two Vectors can't be calculated together\n";
exit(0);
}
for( int i=0; i<len; i ++ )
V[i] = v.V[i];
return *this;
}
ostream & operator<< ( ostream & output, Vector & v )
{
for( int i=0; i<v.len; i++ )
output << setw(8) << setprecision(2) << v.V[i];
cout << endl;
return output;
}
istream & operator>> ( istream & input, Vector & v )
{
for( int i=0; i<v.len; i++ )
input >> v.V[i];
return input;
}
int main()
{
cout << "Input the lenght of the Vector A and Vector B :\n";
int n;
cin >> n;
Vector A(n), B(n),C(n);
cout << "Input those numbers :\n";
cin >> A >> B;
cout << "The result of A + B :\n";
C = A + B;
cout << C;
cout << "The result of A - B :\n";
C = A - B;
cout << C;
cout << "The result of B - A :\n";
C = B - A;
cout << C;
cout << "The result of A * B :\n";
C = A * B;
cout << C;;
cout << "The result of A / B :\n";
C = A / B;
cout << C;
cout << "The result of B / A :\n";
C = B / A;
cout << C;
}
------解决方案--------------------