关于C++中返回一个类对象的一点疑问?解决方案

关于C++中返回一个类对象的一点疑问?
C++   Primer   14.8节专门讨论了C++不能有效的返回一个类对象的问题,并认为这是C++语言的一个重要缺陷。
//没有办法保证内存不会丢失
//因为类Matrix可能很大,所以这种丢失可能很严重
Matrix&   operator+(   const   Matrix&   m1,   const   Matrix&   m2   )
{
Matrix   *result   =   new   Matrix;
//do   the   addition
return   *result;
}
这种方法将会导致很严重的内存泄漏,肯定是不可行的。

我的疑问是,是否可以定义一个局部静态对象作为函数的返回值,一样通过引用返回,不是就高效的返回了一个类对象了么?
Matrix&   operator+(   const   Matrix&   m1,   const   Matrix&   m2   )
{
static   Matrix   result   =   m1+m2;
return   result;
}
静态局部对象的内存将会在程序完成后自动释放,请问这样有何不妥?



------解决方案--------------------
如果返回对象的值,会引发构造函数,如果对象很大的话成本就很高
所以一般是返回const引用或指针
------解决方案--------------------
不行的
这种情况怎么办?

Matrix m1, m2, m3, m4, m5;

m5 = (m1+m2)+(m3+m4);