c ++奇怪的语法

时间:2012-11-16 00:30:39

标签: c++ syntax

我不理解教程中代码中的一些内容 第一个:那个逗号“是什么”,在中间做什么?它是一个重载运算符吗?

u32 TimeStamp = irrTimer->getTime(), DeltaTime = 0;

接下来我有一个来自CharacterDemo类的怪异构造函数,为什么有一些“:”跟着一些带有奇怪括号的变量?我猜是他们正在用括号中的值进行初始化。?

CharacterDemo::CharacterDemo()
:
m_indexVertexArrays(0),
m_vertices(0),
m_cameraHeight(4.f),
m_minCameraDistance(3.f),
m_maxCameraDistance(10.f)
{
    m_character = 0;
    m_cameraPosition = btVector3(30,30,30);
}

imly curiouse,解释很多appriciated

2 个答案:

答案 0 :(得分:4)

这是一个initialization list

它调用指定类的成员和父类的构造函数。

请注意,您只能在类的构造函数中使用它(因为它只发生在它的构造中)。

[edit] 对于您的第一个问题,这是一种同时声明多个相同类型变量的方法。请注意,它不会始终按预期工作:int * a, b将声明a类型的变量int *,以及类型b的另一个变量int(不是指针)。

答案 1 :(得分:2)

  

那个逗号是什么,“在中间做什么?

int i = 3, j = 4;之类的语句与int i = 3; int j = 4;

相同

因此,u32 TimeStamp = irrTimer->getTime(), DeltaTime = 0;定义并初始化两个u32类型的变量:一个名为TimeStamp,另一个名为DeltaTime

  

为什么有一些带有奇怪括号的变量的“:”?我猜是用括号中的值初始化它们。?

这是正确的:google for c++ member initialization list