构造函数低效,用于通过值从函数返回对象的情况

inf*_*ous 2 c++ copy-constructor assignment-operator

我的类Matrix有两个构造函数,包括复制一个,执行深度复制.这种解决方案非常适用于复制另一个对象的明显情况.虽然在以下情况中:

Matrix m = m1 * m2; // for earlier constructed m1 & m2
Run Code Online (Sandbox Code Playgroud)

在我看来效率低下,因为我在乘法运算中创建了一个对象,只是为了复制它而不是直接赋值给m.矩阵可以占据很大的内存.如何更好地处理它,专业人士的常见做法是什么?

矩阵作为二维列表动态实现,如稀疏矩阵的情况.

PS我明白乘法的结果是局部的.然而,我仍然认为,如果没有上述过度计算,它可以以某种方式处理得更好.

Pub*_*bby 6

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

您也可以尝试表达模板,这些模板可以很好地优化这样的代码,尽管语法看起来会有所不同.有关入门的信息,请参见 http://en.wikipedia.org/wiki/Expression_templates.