C++ 在函数中使用与输入/输出相同的变量
我正在编写一个QtGUI程序,与OpenCV一起创建一个人员跟踪应用程序。OpenCV有许多将矩阵作为输入和输出的函数,例如颜色转换函数: cvtColor(输入阵列src,输出阵列dst,整数代码,整数dstCn=0) Mat是OpenCV的默认矩阵类,假设我有一个名为frame的Mat对象,我将实现如下函数来更改其属性: CVT颜色(帧,帧,CV_RGB2HSV,0) 在任何函数上使用与输入和输出相同的变量有什么缺点吗?或者我应该先创建一个副本 或者我应该查看每个函数文档吗?我认为这是个人的选择。以下是一些个人样本: 获取只读输入,即对输出的引用,并在处理输入后将其推送到输出。可选错误结果友好C++ 在函数中使用与输入/输出相同的变量,c++,qt,opencv,C++,Qt,Opencv,我正在编写一个QtGUI程序,与OpenCV一起创建一个人员跟踪应用程序。OpenCV有许多将矩阵作为输入和输出的函数,例如颜色转换函数: cvtColor(输入阵列src,输出阵列dst,整数代码,整数dstCn=0) Mat是OpenCV的默认矩阵类,假设我有一个名为frame的Mat对象,我将实现如下函数来更改其属性: CVT颜色(帧,帧,CV_RGB2HSV,0) 在任何函数上使用与输入和输出相同的变量有什么缺点吗?或者我应该先创建一个副本 或者我应该查看每个函数文档吗?我认为这是个人的
bool function(const type& input, type& output){
output = input;
return true;
}
获取只读输入,将其分配给输出,更改输出并返回它(C++11移动优化)
在这里,您强制对象的一个新副本作为参数,您可以使用它并返回它(当您不想更改副本时,最好使用C++11)
// this makes a pointless copy for the input (use const ref here)
bool function(type input, type& output){
output = input;
return true;
}
(正确的道路是)
<强> ps <强>:自学C++的DEV:(P/>P>)这是个人的选择。如果您以后不需要输入图像,请务必这样做。 实际上我已经试过了,大多数时候都有效,但有些时候效果很差。
这取决于您正在使用的函数。可能的dup:在一般情况下,您几乎肯定要查看文档,甚至可能还要查看相关函数的源代码,以确定此类事情是否安全。但是在这个特定的例子中,你不能。谢谢,这只是一个例子,在这个例子中不起作用,但是我用这个方法实现了其他函数,它们似乎工作正常,所以我想你是对的。事实上,我刚刚发现了一个部分,我在cvtColor函数上传递了相同的变量,它工作得很完美,所以我想这是可能的。该变量是类的私有成员。
type function(type input){
// modify input
return input;
}
type output = function(input);
// this makes a pointless copy for the input (use const ref here)
bool function(type input, type& output){
output = input;
return true;
}
bool function(const type& input, type& output){
output = input;
return true;
}