因此,我需要创建一个表示二维空间中点的类Point
,它必须具有两个double类型的字段,它们分别表示x和y坐标,然后我需要创建一个单个构造函数,可以执行以下操作:
它需要启用两个坐标的初始化,以启用从double类型到x-coordinate(其中y设置为零)的隐式转换,并且需要将点初始化为坐标系的原点。
这就是我试图做到的方式:
class Point
{
double x, y;
public:
Point(double xx) : x(xx), y(0)
{
x = 0;
y = 0;
}
};
但是我不知道这是否在做它需要做的事
如果它说构造函数需要初始化两个坐标,那意味着我需要为其设置值,我实际上不需要向构造函数发送任何参数,但是,要使隐式转换成为可能,我需要发送双精度值并将其分配给x坐标。所以我的问题是: 它是否正确?如果没有,为什么?任何帮助表示赞赏!
答案 0 :(得分:0)
在Point(double xx) : x(xx), y(0)
中,您已经在初始化成员x
和y
(冒号后面的部分称为初始化列表)。完成此操作后,您无需在函数主体中重新分配这些成员。此外,在您写的内容中,xx
的值将被忽略,因为您立即用x
覆盖了x=0
。
按照您的意思,听起来您需要多个构造函数Point(void)
,Point(double x)
和Point(double x, double y)
。一种替代方法是使用默认参数Point(double x=0, double y=0)
,但我发现前者更加透明。