Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在以下函数中
foo(const Mat& img)
img编译器甚至可以在没有警告的情况下在函数中更改。为什么?这是否意味着const Mat参考没有任何意义?
img
const Mat
这是因为 Mat 包含指向实际图像数据的指针。const 仅适用于 Mat 对象本身(例如,行、列等属性),而不适用于指针引用的数据。注意:即使函数是
foo(Mat img)
您仍然可以更改图像数据。
将 Mat 作为 const 引用传递有很多优点。它告诉程序员如何使用 foo() 以及如何修改 foo()。此外,它会阻止您执行以下操作:
void foo(const cv::Mat& img) { img.create(5, 6, CV_8UC3); }
这将得到一个编译器错误。