首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数返回对结构的引用

从函数返回对结构的引用
EN

Stack Overflow用户
提问于 2015-04-20 17:17:29
回答 4查看 6.1K关注 0票数 0

嗨,我正在阅读c++中的引用变量,阅读关于结构的引用,并从函数中返回对结构的引用。我读到的示例代码如下:

代码语言:javascript
复制
#include <iostream>
using namespace std;

struct sysop {
  char name[26];
  char quote[64];
  int used;
};

const sysop & use(sysop & sysopref);

int main()
{
  sysop looper = {"Rick Looper", "I'm a goto kind of guy.", 0};
  use (looper);
  cout << “Looper: “ << looper.used << “ use(s)\n”;
  sysop copycat;
  copycat = use(looper);
  cout << “Looper: “ << looper.used << “ use(s)\n”;
  cout << “Copycat: “ << copycat.used << “ use(s)\n”;
  cout << “use(looper): “ << use(looper).used << “ use(s)\n”;
  return 0;
}

const sysop & use(sysop & sysopref)
{
  cout << sysopref.name << “ says:\n”;
  cout << sysopref.quote << endl;
  sysopref.used++;
  return sysopref;
}

这是来自C++ Primer的书。无论如何,我理解这个例子,但让我感到困惑的是use(looper)。我的意思是函数原型要求返回对常数结构变量的引用,但是在这个语句中,函数没有返回任何引用。我不确定关于常数结构的引用是否有特殊之处,或者允许在不返回数据或什么的情况下使用函数。

有人能给我解释一下吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-20 17:20:52

你说过:

但是在这个语句中,函数没有返回任何引用。

这是不正确的。该函数仍然返回一个const引用。返回值在调用点被忽略。

你可以用:

代码语言:javascript
复制
sysop const& ref = use (looper);

要捕获函数的返回值,请执行以下操作。

票数 0
EN

Stack Overflow用户

发布于 2015-04-20 17:21:46

令我困惑的说法是使用(活计)。我的意思是函数原型要求返回对常数结构变量的引用,但是在这个语句中,函数没有返回任何引用。

是的,确实如此。您必须阅读整个语句,特别是其中表示返回类型为sysop const&的地方。那是一种参考类型。

在本例中,您将一个引用传递到函数中,并将相同的引用直接传回。

票数 0
EN

Stack Overflow用户

发布于 2015-04-20 17:22:37

我的意思是函数原型要求返回对常数结构变量的引用,但是在这个语句中,函数没有返回任何引用。

当您接受sysopref作为使用use(sysop & sysopref)的参数时,它已经是一个引用。当您从函数中返回变量时,只需执行chanel操作即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29754265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档