我无法理解以下代码的含义,请帮帮我,谢谢。
在以下代码中:
FrameDetect::Point FrameDetect::tracer(LabelData *ldata, int x, int y, int &pos, int lbl)
{
for (int i=7; i>=0; i--)
{
int tx(x);
int ty(y);
nextPoint(tx, ty, pos);
if (tx>0 && ty>0 && tx < bimg->width() && ty < bimg->height())
{
const int &l( ldata->at(tx, ty) );
if (bimg->at(tx, ty) == ccolor && (l == 0 || l == lbl))
{
return Point(tx, ty);
}
if (bimg->at(tx, ty) == bcolor)
{
ldata->at(tx, ty) = -1;
}
}
pos = (pos + 1)%8;
}
return Point(-1, -1);
}
int tx(x);
是函数调用还是变量声明?谢谢你的帮助。
答案 0 :(得分:2)
与
相同int tx = x;
“一个int构造函数”
答案 1 :(得分:2)
这意味着声明一个名为int
的{{1}}类型变量。调用构造函数tx
初始化tx(x)
,其值为tx
。代码也可以这样写:
x
答案 2 :(得分:2)
这是一个变量声明。它不能被解析为函数声明,因为括号中的表达式不能命名类型 它也不能是函数调用 - 语法无效。你不能写
double sin(2);
答案 3 :(得分:1)
这是一个复制构造函数。在c ++中,当您声明一个没有参数的变量时会出现混淆。在那种情况下,你省略括号
我将举几个例子:
void afunction_thatDoesNothing(int x) { int aFuncDecl(); //1: function declaration int aVariable; //2: default construction of int int aValue1 = x; //3: constructing with x int aValue2(x); //4: constructing with x int aFuncDecl2(int); //5: declaration of a function taking an int }
上面唯一存在声明与初始化歧义的情况是情况1 - 在您的代码中,您为构造函数提供了一个值类型表达式(情况4),并且它不能被误解为声明。
答案 4 :(得分:0)
int tx(x); 解释
int x(5);变量x。我们在创作时就开始了变异。
int x = 5; //在这个语句中我们将5分配给varible x。在这种情况下已经声明了x。我们只更新它的价值。