2013-10-12 38 views
0

如果此對象「name_of_pro」在 參數化構造函數中動態分配。 我在嘗試但我認爲不是真的在參數化構造函數中如何動態顯示?

------------------------------------ --- ...

class employee{ 
string name, ID, *name_of_pro; 
int age ; 
float salary ; 
public: 
employee(){}; 

employee (string n,int ag, float sa , string name_pro){ // constructor. parameterized 
name=n; 
age=ag; 
salary=sa; 
name_of_pro=new string; 
} 

我希望幫助PLZ。

+0

當然:)>>>>>>>>> –

+0

您的代碼當前*不會動態分配'string'類型的對象,並讓'name_of_pro'指向它。不過,我不確定*爲什麼有人會想這樣做。一個'string',如果它是'std :: string',則已經在內部使用動態內存分配。 – dyp

+0

我的問題大學想要這個(': –

回答

1

我不完全確定我是否瞭解您的問題,但我認爲您的意思是您希望name_of_proname_pro的副本。

employee (string n, int ag, float sa , string name_pro){ 
    name=n; 
    age=ag; 
    salary=sa; 
    name_of_pro=new string(name_pro); // You can make a pointer to a copy this way 
} 

你只需要確保您刪除在析構函數字符串name_of_pro如果這是你想要做什麼。

~employee() { 
    delete name_of_pro; 
} 

什麼可能更容易是一個初始化列表,而不是所有的簡單分配。

employee (string name, int age, float salary , string name_pro) : 
     name(name), age(age), salary(salary), name_of_pro(new string(name_pro)) { 
} 

讓我知道如果這不能回答你的問題。

+0

我會補充說,只是爲了表明你可以做到這一點,但我認爲在很多情況下初始化列表中的動態分配不是一個好主意。 – Danny

+0

非常感謝:) –

相關問題