C++ c++;奇怪的语法

C++ c++;奇怪的语法,c++,syntax,C++,Syntax,我不理解教程中代码中的某些内容 第一个:逗号“在中间做什么?”它是一个重载操作符吗 u32 TimeStamp = irrTimer->getTime(), DeltaTime = 0; 接下来,我从CharacterDemo类中得到了一个奇怪的构造函数,为什么在一些带有奇怪括号的变量后面有“:”呢?我猜它们是用括号中的值初始化的 CharacterDemo::CharacterDemo() : m_indexVertexArrays(0), m_vertices(0), m_camer

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

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);
}
我很好奇,解释得很贴切

这是一个很好的解释

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

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

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

它是一个变量

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

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

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

<逗号“在中间做什么?< /P>” 像
inti=3,j=4这样的语句
inti=3相同;int j=4

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

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

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);
}
这是正确的:谷歌搜索
c++成员初始化列表

<逗号“在中间做什么?< /P>” 像
inti=3,j=4这样的语句
inti=3相同;int j=4

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

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

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);
}

这是正确的:google for
c++成员初始化列表

提示:
u32
是一种类型。另外,提示:
u32
是一种类型。另外,+1提及一般应避免的原因,因为太多人不愿意检查其工作原理的细节,很快就会感到困惑。+1提及一般应避免的原因,因为太多人不愿意检查其工作原理的细节,很快就会感到困惑。