2

我的第一个 OOP 课程有一个作业,我理解所有内容,包括以下语句:

您应该创建一个名为 ComplexNumber 的类。此类将包含定义为双精度数的私有数据成员中复数的实部和虚部。您的类应该包含一个构造函数,该构造函数允许将虚数的数据成员指定为构造函数的参数。默认(非参数化)构造函数应将数据成员初始化为 0.0。

当然,我知道如何在不将它们链接在一起的情况下创建这些构造函数,并且分配不需要将它们链接在一起,但我想按照我的意愿去做。

如果不将它们链接在一起,我的构造函数如下所示:

class ComplexNumber
{
    private double realPart;
    private double complexPart;

    public ComplexNumber()
    {
         realPart = 0.0;
         complexPart = 0.0
    }

    public ComplexNumber(double r, double c)
    {
         realPart = r;
         complexPart = c;
    }
    // the rest of my class code...
}
4

3 回答 3

10

这是你要找的吗?

public ComplexNumber()
    : this(0.0, 0.0)
{
}

public ComplexNumber(double r, double c)
{
     realPart = r;
     complexPart = c;
}
于 2009-12-03T01:30:30.813 回答
3

@Rex 有链接的连接答案。

但是,在这种情况下,不需要链接或任何初始化。CLR 将在对象构造函数期间将字段初始化为其默认值。对于双精度数,这将导致它们被初始化为 0.0。所以默认构造函数情况下的赋值并不是绝对必要的。

不过,有些人更喜欢显式初始化他们的字段以获取文档或可读性。

于 2009-12-03T01:32:37.897 回答
1

我仍在尝试掌握构造函数链接的概念,因此它可以工作,但是为什么/如何?

在构造函数定义中使用“this”关键字进行构造函数链接的“方法”,如 Rex M 的示例所示。

构造函数链接的“为什么”是重用构造函数的实现。如果第二个构造函数的实现(主体)又长又复杂,那么您会想要重用它(即链接到它或调用它),而不是将其复制并粘贴到其他构造函数中。另一种方法可能是将在多个构造函数之间共享的代码放入从多个构造函数调用的公共子例程中:但是,不允许该子例程初始化readonly字段(只能从构造函数初始化,不能来自子例程),因此构造函数链接是一种解决方法。

于 2009-12-03T01:42:49.083 回答