c ++代码段的说明

时间:2015-02-28 08:57:09

标签: c++

我是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** 
}
非常感谢你。

1 个答案:

答案 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语句是多余的,但它反映了条件运算符的语义。