void mul(Matrix *ret,const Matrix *a,const Matrix *b);
Cで書くとこういう関数になると思うが
この時、retとaのポインタが指す領域が別々とは限らないため、

Matrix &operator *=(const Matrix &a);
と関数内部は同一になると思うが、そういうことを言ってるのではないの?