我是c ++及其开发人员的新手。我看到了代码snippt,但我不知道它可以做什么anyone please explain what it does
。关于其余的代码将是有用的。任何帮助都适用。
TrajectData::TrajectData(int numCamera)
:_max_pix_num(0) // **what is says after : symbol**
{
numCamera=3;
_numCamera = ( numCamera > _MAX_IMAGE ) ? _MAX_IMAGE : numCamera;
// **above line please explain**
}
非常感谢你。
答案 0 :(得分:1)
此记录
:_max_pix_num(0)
构造函数定义中的表示使用初始化值0构造(初始化)类的数据成员_max_pix_num
。
当调用类的构造函数时,它按照在类定义中声明它们的顺序调用其数据成员的构造函数。如果您不明确指定应该使用数据成员的构造函数,那么该类的构造函数将调用数据成员的默认构造函数。您可以显式指定应该为数据成员使用什么构造函数,以及应该为初始化数据成员的构造函数提供哪些参数。
这是一个例子
struct A
{
A( int init ) : x( init * init ), y ( init * x )
{
}
int x, y;
};
//...
A a( 10 );
std::cout << "a.x = " << a.x << ", a.y = " << a.y " << std::endl;
输出
a.x = 100, a.y = 1000
至于这一行
_numCamera = ( numCamera > _MAX_IMAGE ) ? _MAX_IMAGE : numCamera;
然后使用所谓的条件(或三元)运算符。
if expression
( numCamera > _MAX_IMAGE )
计算结果为true,然后将_MAX_IMAGE分配给_numCamera。除此以外 _numCamera被分配给自己。也就是说,此语句允许使用不大于_MAX_IMAGE的值设置_numCamera。
实际上,您可以将条件运算符替换为以下代码段
if ( numCamera > _MAX_IMAGE )
{
_numCamera = _MAX_IMAGE;
}
else
{
_numCamera = _numCamera;
}
当然,对于这种特殊情况,else语句是多余的,但它反映了条件运算符的语义。