0

可能重复:
构造函数中这个奇怪的冒号成员语法是什么?
C++ 初始化

我刚刚收到一个 C++ 程序中的头文件,我无法弄清楚这行代码的作用:

Card(Value faceValue=deuce, Suit suit = clubs):
suit(suit), faceValue(faceValue) {}

这是什么:意思,为什么用;(我认为我应该)替换它会破坏代码?

抱歉这个问题的笼统性,但有人可以解释这两行的目的吗?

感谢您的时间。

4

3 回答 3

2

这看起来像类的构造函数Card。之后的部分:是初始化列表,初始化成员变量(或父类,但我认为这不适用于这种情况)的值。构造函数的主体是空的,因为它需要做的所有事情都在初始化列表中完成。

于 2012-09-17T03:20:07.137 回答
2

: 后面是初始化列表。使用它而不是在构造函数主体中分配成员变量的原因是,如果您在构造函数主体中执行此操作,则会首先调用默认构造函数,然后再调用复制构造函数或赋值运算符。通过使用初始化列表,您可以跳过第一步。

于 2012-09-17T03:21:27.980 回答
1

初始化列表。这是在 C++ 中初始化类构造函数的首选方式。

使用它是因为它允许初始化const类的成员而不会出现编译错误。

于 2012-09-17T03:19:51.630 回答