【发布时间】:2012-08-28 07:01:17
【问题描述】:
我在这个问题上来来回回已经有一段时间了,尤其是自从我开始使用 OpenCV 库以来。事实上,在 OpenCV 中,使用了几种方法:
- 第一个:funcA((const) CvMat arg)
- 第二个:funcA((const) CvMat& arg)
- 第三个:funcA((const) CvMat* arg)
- 4th: funcA((const) CvMat*& arg) => 我刚刚看到并且目前被困在这个
当然,对应每个方法,调用者格式和函数实现应该是不同的。
所有这些衍生品有什么意义?尤其是最后一个(我还没弄明白它的用法)
【问题讨论】:
-
第四个允许您更改函数中的参数,即调用者调用 funcA (ptr) 并在您编写的函数中将 ptr 指向某个东西 arg = p; ,并且从函数ptr返回后指向p的目标。
-
'&' 怎么样?只是为了解放功能用户的思想吗?即调用者:funcA(pointer)(它不是调用者:funcA(&pointer))
-
那么,和funcA(CvMat* arg)有什么区别,在funcA中,我觉得还是可以赋值arg = some_other_pointer ??
-
前两个或后两个调用者的语法没有太大的不同。但是语义完全不同。查找按值传递和按引用传递。
标签: c++ opencv argument-passing