簡體   English   中英

使用默認類構造函數C ++遇到麻煩

[英]Having trouble with default class constructor C++

我在理解C ++中的默認構造函數方法以及如何編寫滿足我的方法需求的方法時遇到了一些麻煩。 我的任務是創建一個可以表示多項式的簡單數組,例如a(n)x ^(n)+ a(n-1)x ^(n-1)+…+ a(0)。 它應該是系數數組,系數a(i)存儲在數組的位置i中。 系數是浮點值(可能為負),因此數組應為double類型。 它的大小也應為MAXPOLY(將常量設置為50),從而將數組限制為保留最大程度為MAXPOLY – 1(或49)的多項式。
完整的分配說明/描述可以在這里找到: C ++中的初學者多項式程序

我的問題在於為多項式對象Poly創建默認構造函數。 默認的類構造函數用於將多項式初始化為常數0,創建一個類對象,該類對象是0的0級多項式。但是,賦值還指出,該構造函數的后置條件是coeff的所有數組元素[]設置為0.0,這是我感到困惑的地方。 應該首先為0-MAXPOLY初始化整個數組,然后在0處定義poly嗎? 還是一個就足夠了? 我應該如何編寫構造函數?

如果這個問題看起來很明顯,我深表歉意,但是我是C ++的新手,關於這個主題的教科書資源尚不清楚。 另外,我想我可能會想得太多,讓自己感到困惑。 任何幫助將不勝感激! 謝謝!

我相信您是在想這個問題。 正如coeff [0] = 10的多項式是“ x = 10”,coeff [0] = 0的多項式是“ x = 0”,假定數組的其余部分都初始化為零。

作為C ++的初學者,請記住,數組索引的范圍是0到N-1,其中N是數組的大小。

您應該將系數存儲在數組中。 您有兩種常規選擇:

  • 使用固定大小的數組以及計數器“正在使用”多少個元素的計數器
  • 使用可變大小的數組

第二個選項更簡單,更有意義,因此您的班級將有一個成員

std::vector<double> coefficients;

在構造函數初始化器列表中,您將擁有:

coefficients(1, 0.0)

意味着將其初始化為具有1個值為0.0成員。 然后,您可以通過執行coefficients.size() - 1來找到多項式的次數。

查看鏈接的問題,似乎您無法選擇要使用哪種表示形式。 假設這樣:

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)); //這將用零填充數組存儲空間的每個字節。

在功能上,它們產生相同的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM