假设我有一个我想要添加/乘法/减法等的对象。在这种情况下,我希望有一个逐元素乘法(基本上,我只是运行并将1D数组乘以另一个,但我我想稍后与它进行交互,好像它是一个2D数组)。
这往往是我想写的东西:
D * (A * B * C * ...) * ...
下面,我有一个与之兼容的示例:
struct Matrix{
double * matrix_arr
long size;
long rows;
long cols;
...
Matrix elementwise_product(Matrix B){
...
return new_matrix_C;
}
}
然后我重载乘法运算符,一切正常。
唯一的问题是我理解复制构造函数是针对value返回的对象调用的,而我正在创建可能很大的对象。
我可以通过在更高的范围内分配内存,并使用预先分配的结果数组执行计算来完成所有操作,但随后我失去了非常需要的D*(A*B*C*...)
语法。
我如何获得语法,并避免复制构造函数?