我有一个类,其中包含一些 boost::numeric::ublas::matrix 。我想重载该类的运算符 (+-*/=),以便我可以用一个语句对一组矩阵进行操作。
然而,这似乎需要我的类的临时实例来携带值而不修改原始类。这对我来说很有意义,但是,当我在函数中创建一个新实例并返回它时,我得到:
警告:返回了对局部变量“temp”的引用
我对 C++ 很陌生,运算符重载的示例似乎都返回新的临时对象。我还想避免实例化新矩阵的开销,这导致我循环遍历所有元素。我该怎么办?性能是一个问题。
最佳答案
如果您已经在使用 boost,我强烈建议使用 boost::operators以及您的示例。
您将获得多项好处:
- 您只需重载 +=/-=/= 运算符,并免费获取 +/-/ 运算符。
- 您将获得自由实现的运算符的最佳实现。
- 您将解决您发布的问题,因为您将实现 = 版本,这需要较少的设计。
关于c++ - 包含 boost::numeric::ublas::matrix<double> 的类的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986325/