2014-11-21 94 views
0

傳遞我在C++下面的函數:C++傳遞變量 「結構」 型的作爲參考(&)或由值

Family whoAmI(Family myFam,string MyName, int MyAge) 
{ 
    myFam.Name = MyName; 
    myFam.Age = MyAge; 
    return myFam; 
} 

它返回此類型的struct

struct Family 
{ 
    string Name; 
    int Age; 
}; 

我的問題是:我想我的函數返回一個特定類型的struct,在我們的例子中是Family,但爲了指定函數的返回類型,我必須首先聲明結構,並將其作爲返回類型的功能,如下所示:Family whoAmI() {..}。然後,我必須將該函數中的值添加到struct,最終類似於Family。這意味着我需要在函數本身中重新聲明類似的struct(這非常耗費內存)。我所做的就是將struct的引用傳遞給該函數以防止在該函數中重複使用struct。現在,這是正確的嗎?因爲它在爭論中佔有一席之地,因此不太方便。

現在,我把它稱爲是這樣的:

Family x; 
Family result = whoAmI(x, "Mostafa", 25); 
+2

爲什麼不把這個建成爲'Family'? – 2014-11-21 10:17:23

+2

你的代碼看起來像你正在尋找一個構造函數。 – pmr 2014-11-21 10:17:33

+0

你能否詳細說明一下? – 2014-11-21 10:19:04

回答

4

使用構造函數。

struct Family { 
    Family(const std::string& Name, int Age) 
    : Name(Name), Age(Age) {} 

    std::string Name; 
    int Age; 
}; 

// use like: 
Family me{"AName", 45}; // or Family me("AName", 45); on old compilers 
+0

非常好。謝謝。我可以問你爲什麼聲明'std:string&'爲'const'嗎? – 2014-11-21 10:31:44

+0

@MostafaTalebi參數是對一個常量對象的引用。因爲你不會修改它,因爲這避免了副本,因此不變。 – pmr 2014-11-21 11:40:04

+0

OO明白了,謝謝 – 2014-11-21 11:40:55