2013-03-11 70 views
0

我在需要5個參數來初始化字段的類中定義構造函數。其中兩個參數/字段來自Date結構。具有結構組件的類構造函數

Information(string NewName, Date start, Date finish, 
      double newNumber, double newLevel); 

這是否正確嗎?

另外,我將如何去輸入參數在int main()?像這樣?我如何着手將價值觀納入結構論點?他們是否進入報價?

Information arguments("Susan Jones", "3/5/5", "3/5/5", 15, 58); 

日期結構:

struct Date 
    { 
    int month; 
    int day; 
    int year; 
    }; 
+1

能否請您界定 「適當」?我不確定你在問什麼。 – thiton 2013-03-11 19:11:44

+0

@thiton Ich meine,ist dies der richtige Weg es zu tun? – Patrick 2013-03-11 19:18:13

+0

「Richtig」有許多含義和許多觀點。更具體的問題會有所幫助。 – thiton 2013-03-11 19:22:36

回答

1

最好是常量引用傳遞給構造函數中使用非基本類型。因此,使數據const&,而不是隻是副本。更具體地講:

Information(const string& NewName,const Date& start,const Date& finish, 
      double newNumber, double newLevel); 

而且假定日期有一個構造服用std::stringconst char*調用構造函數是正確的(雖然它看來你是打電話叫Paycheck另一個類的構造函數)的方式。

否則代碼似乎是合理的。

+0

我該如何去輸入結構參數?他們是否進入報價? – Patrick 2013-03-11 19:22:19

+0

@ user22507不,你只需調用給定參數的構造函數,假設Date有一個構造函數以3個整數作爲參數: '信息參數(「Susan Jones」,Date(3,5,5),Date(3, 5,5),15,58);' – 2013-03-11 19:30:02

+0

@IvayloStrandjev:這完全取決於Date類的構造函數,以及它是否可以通過字符串隱式構造。但是你的建議更可能。 – 2013-03-11 19:32:36

0

您顯示的Information構造函數看起來很合理。對於中型或大型物體,您可能希望通過const Date&而不是僅僅通過Date,但對於像您一樣的小型/簡單/快速物體,製作副本不應該成爲一件大事。這裏的「正常」的方式:

Information(const string& NewName, const Date& start, const Date& finish, 
     double newNumber, double newLevel); 

然而,"3/5/5"不是構建的Date實例的正確方法。有兩種方式,如下所示。第一個更容易理解,但第二個代碼更少。

Date start; 
start.month = 3; 
start.day = 5; 
start.year = 5; 

Date finish; 
start.month = 3; 
start.day = 5; 
start.year = 5; 

Information arguments("Susan Jones", start, finish, 15, 58); 

Information arguments("Susan Jones", {3,5,5}, {3,5,5}, 15, 58); 
+0

謝謝 - 我將如何在類中聲明構造函數? – Patrick 2013-03-11 21:24:55

+0

@ user22507:什麼?你將如何聲明什麼類的析構函數? – 2013-03-11 22:48:05