C ++传递" struct"的参数键入作为引用(&)或按值传递

时间:2014-11-21 10:13:28

标签: c++ struct

我在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);

1 个答案:

答案 0 :(得分: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