这是函数调用还是变量声明
Is this a function call or a variable declaration?
我无法理解以下代码的含义,请帮助我,谢谢。
在以下代码中:
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);
是函数调用还是变量声明?谢谢你的帮助。
源
与相同
int tx = x;
"一个int构造函数"
它是一个变量声明。它不能被解析为函数声明,因为括号中的表达式没有命名类型
它也不能是函数调用-语法无效。你不能写
double sin(2);
表示声明一个名为tx
的int
类型变量。调用构造函数tx(x)
初始化tx
,其值为x
。代码也可以这样写:
int tx = x;
它是一个复制构造函数。在c++中,当您声明一个没有参数的变量时,就会出现混乱。在这种情况下,您可以省略括号
我将举几个例子:
void afunction_thatDoesNothing(int x){int aFuncDecl()//1:函数声明int aVariable//2:int的默认构造int aValue1=x//3:用x构造int aValue2(x)//4:用x构造int aFuncDecl2(int)//5:采用int的函数的声明}
上面唯一存在声明与初始化歧义的情况是情况1——在代码中,您向构造函数提供了一个值类型的表达式(情况4),它不能被误解为声明。
int tx(x);解释
int x(5);一个变量x,我们在创建变量时初始化它。
int x=5;//在这个语句中,我们将5赋值给变量x.x,在本例中已经声明。我们只是更新了它的价值。
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]