如何委托此构造函数?

问题描述 投票:0回答:1

对于 C++ 作业,我需要使用 Point 类,并且使用该 Point 类我需要创建一个 Triangle 类。

我对 Point 类使用了以下构造函数:

//constructor 1
Point() 
{
    x = 0;
    y = 0;
}

//constructor 2
Point(double i, double j)
{ 
    x = i; 
    y = j;
}

我的 Triangle 类的第一个构造函数是:

  Triangle()
    {
        a = Point();
        b = Point();
        c = Point();
    }

现在下一步是:

创建一个带有三个 Point 参数并初始化的构造函数 属性 a、b 和 c 具有三个参数。使用构造函数 属性初始化的委托。

我读到您需要使用构造函数委托来将已经完成的工作委托给新的构造函数,以防止重写代码。

  Triangle(Point a, Point b, Point c)
        {
         
        }

我是一名初学者,我发现用现有的课程创建新课程真的很困难。 我能否获得有关如何委托此构造函数的反馈?

蒂姆

c++ object
1个回答
-1
投票

这是代码的稍微重构版本,反映了更现代的 C++ 实践(自 2011 年以来):

struct Point {
    Point() = default;
    Point(double i, double j) : x(i), y(j) {}

    double x = 0;
    double y = 0;
};

struct Triangle {
    Triangle() = default;
    Triangle(Point i, Point j, Point k) : a(i), b(j), c(k) {}

    Point a, b, c;
};

这不使用您提到的“构造函数委托”功能,因为这适用于调用同一类的其他构造函数的构造函数。 它使用初始化列表和类成员初始值设定项 (

= 0
) 使代码更加简洁和惯用(通过能够使用默认构造函数的
= default
声明,而不必自己编写它们)。

如果你真的想为

Point
使用构造函数委托,你可以像这样编写默认构造函数:

Point() : Point(0, 0) {}

然后您就不需要

= 0
来代替
x
y

© www.soinside.com 2019 - 2024. All rights reserved.