可能重复:
构造函数中这个奇怪的冒号成员语法是什么?
我很少在常规代码中遇到类中的单个冒号,例如:
A::member():b(),c()
{
}
单冒号在这里有什么重要性?为什么在这里使用它?有时是强制性的吗?如果是在哪些情况下?
可能重复:
构造函数中这个奇怪的冒号成员语法是什么?
我很少在常规代码中遇到类中的单个冒号,例如:
A::member():b(),c()
{
}
单冒号在这里有什么重要性?为什么在这里使用它?有时是强制性的吗?如果是在哪些情况下?
此上下文中的单个冒号用于表示您正在使用初始化列表。初始化列表用于:
正如其他人所指出的,初始化列表只能用于类构造函数。
虽然也可以在构造函数的主体中初始化成员变量,但通过初始化列表这样做有几个原因:
说了这么多,你的代码格式有点奇怪。在我通常使用的代码中,初始化列表的使用会像这样缩进:
A::A()
:b(),
c()
{
}
这让我更清楚的是,:
与::
用于定义类成员资格的A::A()
.
单冒号指定了一个初始化列表,正如其他几个响应已经说明的那样。
一般来说,这些列表和构造函数有很多陷阱。C++ 在生成默认构造函数和复制构造函数方面做得很合理,但是如果您自己编写,则由您来处理所有事情:
它用于初始化引用。在 c++ 中,您不能分配或修改引用,因此在类中只能使用分号语法“分配”它们。