我不理解教程中代码中的一些内容 第一个:那个逗号“是什么”,在中间做什么?它是一个重载运算符吗?
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
答案 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
。