问题:
有两个垫对象:mat_1和mat_2将mat_2赋值给mat_1(mat_1 = mat_2)后,改变mat_1,mat_2也会被改变(这里的改变是指图像处理)。
问题原因:
mat_1 = mat_2是浅拷贝,他们虽然不同的矩阵头,但却共享内存空间。以至于改变其中一个,另一个也会被改变。
问题解决:
mat_1 = mat_2.clone();
问题本质是指针之间的赋值
两个指向int类型变量的指针:整数* p; int * q; p = q是将两个q指向INT类型变量的地址赋值给p,p、q指向同一地址,所以改变q,p也会被改变。
这是C ++类对象的浅拷贝和深拷贝详细解释(转)
原文:https://blog.csdn.net/fdsfgi/article/details/80895287