Автор: GeorgeIV (22.04.2009 в 13:03)
Вот такой вариант работает логично, не изменяя операнды
#include "stdio.h"
class vectorn
{
protected: int dim;
public:
vectorn();
vectorn operator+(const vectorn&);
vectorn &operator=(const vectorn&);
};
vectorn::vectorn()
{
dim=4;
}
vectorn vectorn::operator +(const vectorn &A)
{
vectorn B;
B.dim = this->dim+A.dim;
return B;
}
vectorn& vectorn::operator=( const vectorn& A)
{
if(this == &A) return *this;
dim=A.dim;
return *this;
}
class vector:public vectorn
{
public:
vector();
vector operator+(const vector &A);
vector &operator=(const vector&);
};
vector::vector()
{
dim=3;
}
vector vector::operator +(const vector &A)
{
vector B;
B.dim = this->dim + A.dim;
return B;
}
vector& vector::operator=( const vector& A)
{
if(this == &A) return *this;
dim=A.dim;
return *this;
}
int main()
{
vector C,B,A;
C = B + A;
return 0;
} |