返回类型

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在前三课,你学到了传递的参数的值,参考函数,和地址。在本节中,我们将考虑返回值返回给调用者通过所有三个方法问题。

事实上,从一个函数的地址值,它的调用者返回值,或参考作品几乎完全相同的方式作为参数传递给一个函数是。所有的好处和缺点的每个方法都存在。两者之间的主要差别是,数据流的方向是相反的。然而,有一个更增添了几分复杂,因为在一个函数的局部变量超出范围的函数返回时,我们需要考虑这种效果在每个返回类型。

(作者注:这节课有一个有趣的课数,因为它最初是从7章略)

返回值

返回值是最简单和最安全的返回类型使用。一个值时,返回的值,该值的一个副本被返回给调用者。是按值传递的,你可以通过文字返回值(如5),变量(如X),或表达(如x + 1),这使得价值非常灵活的回报。

通过价值回归的另一个优点是,您可以返回变量(或表达式),涉及的局部变量在函数声明。因为变量的功能超出范围之前,评估,和副本的值返回给调用者,没有问题,当变量超出范围在函数的末尾。

1
2
3
4
5
int DoubleValue(int nX)
{
    int nValue = nX * 2;
    return nValue; // A copy of nValue will be returned here
} // nValue goes out of scope here

返回值是最合适的退货时变量在函数声明,或返回函数的参数是按值传递的。然而,像传值,返回的值是缓慢的结构和大类。

引用返回

就像通过参考,返回的值的引用必须是变量(你不能返回一个引用到一个文字或表达式)。一个变量时,返回的引用,一个变量的引用传递回调用方。然后打电话者可以使用这个参考继续修改的变量,它可以是有用的时候。引用返回的也快,可返回时的结构和类。

然而,返回引用有一个附加的缺点,通过参考不通你不能通过引用返回函数的局部变量。考虑下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// This struct holds an array of 25 integers
struct FixedArray25
{
    int anValue[25];
};
 
// Returns a reference to the nIndex element of rArray
int& Value(FixedArray25 &rArray, int nIndex)
{
    return rArray.anValue[nIndex];
}
 
int main()
{
    FixedArray25 sMyArray;
 
    // Set the 10th element of sMyArray to the value 5
    Value(sMyArray, 10) = 5;
 
    cout << sMyArray.anValue[10] << endl;
    return 0;
}



C++中函数定义返回类型和内部实现返回类型不同的原因 这两天在看OSG的插件实现的源代码的过程中发现了一个让我比较纳闷的问题:比如在OBJ插件中,其实现的ReadWriterOBJ类的readNode函数,代码如下: osgDB::ReaderWriter::ReadResult ReaderWriterOBJ::readNode(std::istream& fin, const Options* options) const{ 阅读详情

相关推荐

cxx17 尾随返回类型

这是因为习惯的力量。不过个人而言,必须不断打破自己的惯性。所以关于尾随返回类型,我也有一些看法,可以记录一下。

m0_73257876的博客 986

参考函数

在前三课,你学到了传递的参数的值,参考函数,和地址。在本节中,我们将考虑返回值返回给调用者通过所有三个方法问题。 事实上,从一个函数的地址值,它的调用者返回值,或参考作品几乎完全相同的方式作为参数传递给一个函数是。所有的好处和缺点的每个方法都存在。两者之间的主要差别是,数据流的方向是相反的。然而,有一个更增添了几分复杂,因为在一个函数的局部变量超出范围的函数返回时,我们需要考虑这种效果在每个

u014260366的专栏 668

async 的三大返回类型

序   博主简单数了下自己发布过的异步文章,已经断断续续 8 篇了,这次我想以 async 的返回类型为例,单独谈谈。   异步方法具有三个可让开发人员选择的返回类型:Task、Task 和 void。    什么时候需要使用哪一种返回类型,具体情况需要具体分析。如果使用不当,程序的执行结果也许并不是你想要的,下面我们就来好好谈谈如何针对不同的情况选择不同的返回类型。  

悠悠的博客 4189

返回值的类型详解

在初学过程中,printf的返回值和scanf的返回值,是很多人不知晓的,当面试企业被问到时是一头雾水,这篇文章我们将详细的解答一下return,scanf,printf的每个返回值。

weixin_68079583的博客 1万+

一.函数的返回类型(笔记)

int表示整型的意思 1.为什么要用int main?(上课有过void main的写法) 应该使用int main()而不是void main(),int main()才是标准的写法,因为return 0可以代表函数正常运行,而非0值代表异常。因此,main函数的返回值的意义,不仅仅是一个返回值,还说明程序是否正常运行。c99标准只说明了两种main函数的定义方式,是int main(),和int main(int argv,char ※argv【 】)两种。在单片机的嵌入式编程中的c语言不

m0_75060651的博客 1690

统一的数据返回格式和异常处理

后端项目中, 常用的统一数据返回格式的介绍, 以及如何进行异常处理

这个人很懒, 什么都没留下(这是我写的) 2243

Java方法【返回类型

(2)虽然不能使用return 返回值这一语法,但能使用return关键字,因为return关键字,除了可以用于返回数据之外,还可以用于。如果方法定义的返回类型为void,那么不能使用 return 返回值;这一语法,且不能调用该方法的语句视作数据进行操作。可以利用变量声明语句 或者 输出语句 或者运算符 对其进行操作。(基本或引用数据类型都可以)1.方法在执行结束后,有需要返回的数据,用。2.方法在执行结束后,没有需要返回的数据(语法 :return 返回值;定义方法在执行结束后。

BroRiver 7521

什么是尾随返回类型

这是我们熟悉的写法,返回类型写在函数名前面,参数列表后面是函数体。

weixin_45715405的博客 1284

C++返回类型

不要返回局部对象的引用或指针 函数完成后,它所占用的存储空间也随之释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的区域。此时如果使用局部对象的引用或指针将发生未定义行为。 引用返回左值 函数的返回类型决定函数是否是左值。调用一个返回引用的函数得到左值,其他返回类型得到右值。可以像使用其他左值那样来使用返回引用的函数的调用,特别是我们可以为返回类型是非常量引用的函数的结果赋值,如果返回值是常量引用,则不能赋值: char &get_val(string &str, string::s

BeyMax的博客 2429

C++11尾置返回类型详解

尾置返回类型是一种新的函数声明语法,它允许我们将函数的返回类型写在参数列表之后。在原本写返回类型的位置使用auto关键字作为占位符。在参数列表()之后,使用一个箭头->,后面跟着真正的返回类型。语法对比:传统语法 (Traditional Syntax)尾置返回类型语法 (Trailing Return Type Syntax)// 传统语法// 尾置返回类型语法 (效果完全相同)对于这种简单的函数,两种写法没有本质区别,尾置返回类型语法甚至看起来更繁琐。

hututu的博客 1089

C++11 尾随返回类型:从入门到精通

C++11 引入的尾随返回类型是一个强大的特性,它为开发者提供了更加灵活和清晰的方式来声明函数的返回类型。通过将返回类型放在参数列表之后,尾随返回类型解决了传统返回类型声明在模板编程和类型推导中的局限性,使代码更加简洁易读。在模板函数、复杂表达式和 Lambda 表达式等场景中,尾随返回类型发挥了重要作用。然而,在使用时也需要注意可读性和兼容性等问题。随着 C++ 标准的不断发展,尾随返回类型与其他特性的结合使用将为开发者带来更多的便利和可能性。

码事漫谈 1082

【c 语言】函数前面的返回类型

这篇文章到这里就结束了如果觉得这篇博客对你有用的话,别忘记三连哦。我是豌豆射手^,让我们我们下次再见。

m0_74195174的博客 1470

现代C++新特性 函数返回类型后置

文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 使用函数返回类型后置声明函数 前面已经出现了函数返回类型后置的例子,接下来我们将详细讨论C++11标准中的新语法特性: auto foo()->int { return 42; } 以上代码中的函数声明等同于int foo(),只不过采用了函数返回类型后置的方法,其中auto是一个占位符,函数名后->紧跟的int 才是真正的返回类型。当然,在这个例子中传统的函数声明方式更加简洁。而...

神奇的小强 2719

C++11引入的尾置返回类型

本文介绍了C++11引入的尾置返回类型

hubing_hust的专栏 6749

无效的方法声明;需求返回类型的解决方案

在Java编程中,方法声明必须遵循一定的语法规则。如果方法声明中没有指定返回类型(除了构造方法和某些特定的接口方法),编译器将会抛出一个“无效的方法声明;需求返回类型”的错误。这个错误表明方法声明的语法有误,需要修正。

2301_79779756的博客 2138

Java之协变返回类型理解和简单实例

开心一笑【早上起来,发现天气越来越冷了,白粽子记得要多包几层叶】提出问题Java中协变返回类型如何理解???解决问题概念导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型的子类。实例package com.evada.de; /** * @Author 阿毅 * Created by Ay on 2016/12/4. */ public class Ay {

IT技术分享 1万+

Trailing return types尾部返回类型

文章目录为什么要有尾部返回类型什么是返回类型推导(return type deduction)不是什么时候都要使用尾部返回类型   尾部返回类型在C++中是一个很奇怪的内容,我们应该只在必要的时候使用。我们要决定采用它作为一种通用风格的时候一定要小心,并尽量的保持这种风格。   首先看下列代码: auto getMulticastHops() const -> int; 这是一种声明C++11语言中函数的方法。->int部分称为尾部返回类型,这行代码和一下代码是相同的: int getMult

千祠的博客 487

返回类型和return语句

1. 返回类型和return语句 return语句的两个操作: 终止当前执行的函数 将控制权返回到调用该函数的地方 return语句两种形式: //形式一 return; //形式二 return expression; 1.1 无返回值函数 无返回值函数的最后一句会隐式地执行return void swap(int &v1, int &v2) { if(v1 == v2) //如果相等,则直接终止函数 return; //终止swap函数 //v1不等于v2,则交换v1和v2

一个搬运知识的笨小孩 1428

指定lambda返回类型

在使用lambda表达式时,有时候可以不用指定放回类型,但有时必须指定返回类型,否者将会出错。 为什么? 1.不指定返回类型的情况。     一般情况下,编译器会自动推断出lambda的返回类型。例如: auto func_1=[] (int I) {return I;};   //编译器推断返回类型为int型 auto func_2=[] (int I) {cout 2.必须指定返回类

clelo4的博客 1万+
上一篇: 通过引用返回值
下一篇: 函数将返回
sssdffa
博客等级 码龄12年 4粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值