Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;引申论点;结构";键入作为引用(&;)或按值传递_C++_Struct - Fatal编程技术网

C++ C++;引申论点;结构";键入作为引用(&;)或按值传递

C++ C++;引申论点;结构";键入作为引用(&;)或按值传递,c++,struct,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,但为了指定函

我在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
,但为了指定函数的返回类型,我必须首先声明struct,并将其转换为函数的返回类型,如下所示:
Family whoAmI(){..}
。然后我必须将函数中的值添加到
结构中,该结构最终类似于
族。这意味着我需要在函数本身中重新声明一个类似的
struct
(这相当消耗内存)。我所做的是将
struct
的引用传递给函数,以防止函数中重复
struct
。现在,这是正确的吗?因为它在辩论中占有一席之地,因此不太方便

现在,我这样称呼它:

Family x;
Family result = whoAmI(x, "Mostafa", 25);
使用构造函数

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
使用构造函数

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

为什么不让它成为
系列
的构造函数?你的代码看起来像是在找构造函数。你能详细说明一下吗?为什么不让它成为
系列
的构造函数呢?你的代码看起来像是在找构造函数。你能详细说明一下吗?很好。谢谢我可以问一下为什么将
std:string&
声明为
const
?@MostafaTalebi参数是对常量对象的引用。常量,因为你不打算修改它,引用,因为这避免了复制。很好。谢谢我可以问一下为什么将
std:string&
声明为
const
?@MostafaTalebi参数是对常量对象的引用。常量,因为您不打算修改它,引用,因为这样可以避免复制。