A little while ago while I was surfing the web I stumbled on a blog of a C++ programmer. Sadly, I was unable to retrace my steps, so I will have to reconstruct what I found there from memory. The programmer was faced with the task of multiplying two matrices with each other. The result is yet another matrix. Efficiency and ease of use were important criteria. Here is the relevant part of the code:
matrix & matrix::operator* (matrix const & other) const { // snip: ... assert matrix sizes are compatible ... matrix * result = new matrix(rows(), other.columns()); // snip: ... compute and store matrix elements ... return *result; }
Let us put on our CSI C++ hat for a while.