2015-09-28 56 views
-2

我有幾個問題想在C++課程中用我的數據結構來檢查。他們對付下面的類和多維數組:問:餐廳包含MAX_ITEMS多少份?

class Order 
{ 
public: 
    Order(); 
    void addItem(string name, double price); 

private: 
    static const int MAX_ITEMS = 10; 
    string itemNames[MAX_ITEMS]; 
    int numItems; // # of items actually stored 
    double totalPrice; 
}; 

const int TABLES = 10; 
const int SEATS = 4; 
Order diningRoom[TABLES][SEATS]; 

Q1:如何MAX_ITEMS許多副本並在陣列diningRoom包含哪些內容?

這是40對嗎?數組中的每個元素都有一個副本,10 * 4。

問題二:會員功能addItem應該改爲聲明如何?

A.) void addItem(const string &name, double price); 
B.) void addItem(string &name, double price); 
C.) void addItem(string name, double price) const; 
D.) void addItem(string name[], double price); 

A?通過const引用傳遞?這一個我不太確定。

+0

問題2:沒有硬性的,快速的答案。 http://stackoverflow.com/questions/10231349/are-the-days-of-passing-const-stdstring-as-a-parameter-over – PaulMcKenzie

+0

A或B,但你可以消除C(不能添加項目如果方法是const,則爲Order)和D(僅添加一個項目,這樣一個名稱數組毫無意義)。 – user4581301

+0

@ user4581301對於Q2,原始聲明也是有效的。 – PaulMcKenzie

回答

2
  1. 不。有一個MAX_ITEMS實例,因爲它是一個靜態成員。

  2. 是的。 Const參考是要走的路。

+2

嗯...對於#2。在評論中看到我的鏈接。這是非常基於意見的。 – PaulMcKenzie

+2

附錄:由於它是一個靜態成員,因此在'diningRoom'中有**零個** MAX_ITEMS副本。 「MAX_ITEMS」的一個實例坐在旁邊,而不是任何對象。 – user4581301

+0

我同意這是基於意見/情況。但對於C++課程來說,通常是處理不被函數修改的複雜類型的教程。 – warsac