Next: Overloading compound assignments: +=,
Up: Simple Classes: myvector.h
Previous: Improvements: Range checking
Here is how we make it possible to add two vectors in expressions like
a + b
.
class vector {
...
public:
...
// Binary +
friend vector operator+(const vector &v1, const vector &v2);
...
};
inline vector operator+(const vector &v1, const vector &v2){
if(v1.size != v2.size){
cerr << "FATAL vector::operator+(const vector &, const vector&) size mismatch: ";
cerr << v1.size << " " << " != " << v2.size << "\n";
exit(1);
}
vector v(v1.size); // Construct a temporary vector to hold the sum
for(int i = 0; i < v1.size; i++)
v.vec[i] = v1.vec[i] + v2.vec[i];
return v;
}

Notice that this function is not a class method. It is merely a
function that acts on the class and returns a new instance of the
class. We make it a friend
so it can access the private
class members. In order to do the sum, it is necessary to create a
temporary vector to hold the sum, and populate its components with the
sums of the components of the vectors being added.
Carleton DeTar
20070817