首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-23 
关于C++中返回一个类对象的一点疑问?C++Primer14.8节专门讨论了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);

热点排行