我在理解C ++中的默认构造函数方法时遇到了一些麻烦,以及如何编写一个方法来满足我的方法需求。我的任务是创建一个可以表示多项式的简单数组,例如a(n)x ^(n)+ a(n-1)x ^(n-1)+ ... + a(0)。它应该是系数阵列,系数a(i)存储在阵列的位置i中。系数是浮点值(可能为负),因此数组应为double类型。它的大小也应该是MAXPOLY(常量变量设置为50),将数组限制为保持多项式,最大程度为MAXPOLY - 1(或49)。
完整的作业说明/说明可在此处找到: Beginner polynomial program in C++
我的问题在于为多项式对象Poly创建默认构造函数。默认类构造函数用于将多项式初始化为常量0,创建一个0度多项式为0的类对象。但是,该赋值还指出,此构造函数的post条件是coeff的所有数组元素[]设置为0.0,这就是我的困惑随之而来的地方。首先应该为0-MAXPOLY初始化整个数组,然后将poly定义为0?或者一个或另一个应该足够吗?我该如何编写构造函数?
如果这个问题看起来很明显,我很抱歉,但我对C ++来说是全新的,我读过的关于这个主题的教科书资源还不清楚。此外,我想我可能会过度思考并使自己感到困惑。任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
我确实相信你正在推翻这个问题。正如具有coeff [0] = 10的多项式是“x = 10”,具有coeff [0] = 0的多项式是“x = 0”,假设数组的其余部分被初始化为零。
作为C ++的初学者,请记住数组索引从0到N-1,其中N是数组的大小。
答案 1 :(得分:0)
您应该将系数存储在数组中。您有两个常规选项:
第二个选项更简单,更有意义,所以你的班级会有一个成员
std::vector<double> coefficients;
并在构造函数初始化列表中,您将拥有:
coefficients(1, 0.0)
表示将其初始化为1
成员的值0.0
。然后,您可以通过coefficients.size() - 1
找到多项式的次数。
答案 2 :(得分:0)
查看链接的问题,您似乎无法选择要使用的表示形式。假设:
class Poly
{...
// array for holding the coefficients of the poly
double coeff[MAXPOLY];
...
}
然后,构造函数需要用零值填充数组,如下所示:
// Class constructor
Poly::Poly ()
{
//ADD YOUR CODE HERE
for( int i = 0; i < MAXPOLY; i++ )
coeff[i]=0.0;
}
这是最明确的演示,尽管您可以缩短代码以将数组初始化为:
memset(coeff,0,sizeof(coeff)); //这会将数组内存空间的每个字节填充为零。
从功能上来说,他们会产生同样的东西。