Returning a const Object

The preceding definition of Vector::operator+() has a bizarre property. The intended use is this:

net = force1 + force2;                             // 1: three Vector objects

However, the definition also allows you to use the following:

force1 + force2 = net;                            // 2: dyslectic programmingcout << (force1 + force2 = net).magval() << endl; // 3: demented programming

Three questions immediately arise. Why would anyone write such statements? Why are they possible? What do they do?

First, there is no sensible reason for writing such code, but not all code is written for sensible reasons. People, even programmers, make mistakes. For instance, if the comparison operator==() were defined for the Vector ...

Get C++ Primer Plus now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.