特定的构造函数和其中的字段初始化

时间:2018-12-13 16:28:24

标签: c++ class

因此,我需要创建一个表示二维空间中点的类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坐标。所以我的问题是: 它是否正确?如果没有,为什么?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

Point(double xx) : x(xx), y(0)中,您已经在初始化成员xy(冒号后面的部分称为初始化列表)。完成此操作后,您无需在函数主体中重新分配这些成员。此外,在您写的内容中,xx的值将被忽略,因为您立即用x覆盖了x=0

按照您的意思,听起来您需要多个构造函数Point(void)Point(double x)Point(double x, double y)。一种替代方法是使用默认参数Point(double x=0, double y=0),但我发现前者更加透明。