C++ 构造函数在按值从函数返回对象的情况下效率低下

C++ 构造函数在按值从函数返回对象的情况下效率低下,c++,copy-constructor,assignment-operator,C++,Copy Constructor,Assignment Operator,我的类矩阵有两个构造函数,包括执行深度复制的复制构造函数。这种解决方案对于复制另一个对象的明显情况非常有效。但在以下情况下: Matrix m = m1 * m2; // for earlier constructed m1 & m2 在我看来,这似乎是低效的,因为我在乘法运算中创建了一个对象,只是为了让它被复制,而不是直接分配给m。矩阵可以占用大量的内存。如何更好地处理它,专业人士的常见做法是什么 矩阵以二维列表的形式动态实现,就像稀疏矩阵一样 另外,我知道乘法的结果是局部的。不过,

我的类矩阵有两个构造函数,包括执行深度复制的复制构造函数。这种解决方案对于复制另一个对象的明显情况非常有效。但在以下情况下:

Matrix m = m1 * m2; // for earlier constructed m1 & m2
在我看来,这似乎是低效的,因为我在乘法运算中创建了一个对象,只是为了让它被复制,而不是直接分配给m。矩阵可以占用大量的内存。如何更好地处理它,专业人士的常见做法是什么

矩阵以二维列表的形式动态实现,就像稀疏矩阵一样


另外,我知道乘法的结果是局部的。不过,我还是觉得,如果没有上述的过度计算,它可以以某种方式处理得更好。

在C++11中,您可以创建一个移动构造函数,它在您的情况下应该更快。我不打算解释如何这样做,因为已经有很多教程,例如:


您也可以尝试表达式模板,它可以很好地优化这样的代码,尽管语法看起来会有所不同。有关入门信息,请参阅。

如果您有权访问C++11,则可以使用移动语义。@Xymostech,我刚刚要提到:)您要查找的是表达式模板。使用它们的效果非常好。可以帮助您自己制作。您确定正在复制吗?可能允许编译器删除该副本。搜索NVRO。