【C++】C++中如那边理多返回值

打印 上一主题 下一主题

主题 1023|帖子 1023|积分 3069

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
十四、C++中如那边理多返回值

本部分也是碎碎念,因为这些点都是很小的点,构不成一篇文章,以是本篇就是想到哪个点就写哪个点。
1、C++中如那边理多个返回值
写过python的同学都知道,当你写一个函数的返回时,那是你想返回谁就能返回谁,想返回几个就可以返回几个,险些黑白常的为所欲为了,因为python背后是做了很多很多事变才让你如此肆意的。C++就非常不可了,因为C++本身就很底层,没有更底层的东西去为它做这些事变了,以是所有都得C++自己花式变出来。
我们都知道,C++默认环境下,一个函数是不能返回两个对象的,就是只能返回一个特定的对象,以是更别提返回多个类型的对象了
那你的意思是python都能完成的事变,C++却完成不了?非也,这两者根本都没有可对比性。C++是底层,就是所有顶层的东西都是底层一生二、二生三、三生万物而呈现出来的百花齐放。底层不存何来万物。以是C++当然也可以实现返回多个对象,只是这个实现过程需要你用你的智慧去实现。
以是在C++中,你要使一个函数返回多个对象或者多种类型的对象,其实是有很多差别的方法可以实现的。下面我就只管多摆列几种方法。
(1)使用结构体实现。我个人也比较推荐这种方法,比较清晰也好理解。

这里想夸大的是,只要涉及到多返回值,或多或少都要涉及到复制,只要涉及到复制,性能就是一个绕不开的话题。上述例子中,两个字符串是步伐进入main函数后,先开始运行func函数,而运行func函数就先构造参数,构造参数就是在常量区先写入"lyy""liyuanyuan"这两个字符串,然后才开始实行func,func又是在栈内存创建的,而实行func我们是通过引用传参的,这样就少了一次复制。
func函数实行完毕,就是赋值给e。此时就得先找到连续的空间给e,然后把e的3个对象的值初始化成func的返回值。此时必定的复制呀。以是这里想说的是不管你使用哪种方法,你脑筋里肯定要不停确认是否有性能标题。
(2)通过参数实现。这种方法不需要使用C++提供的特定类(方法),但是比较难明

通过参数实现一个函数多返回值的方法,就比较难理解,不过如果你对传值、传址、指针、引用这些基础概念非常清晰的话,其实也不难。
以是这里要夸大的是,如果你是通过参数实现的,那你万万可不能传值,传值将不会得到你想要的效果的。因为func函数的返回值变量,我们是先界说到main函数里,然后再把变量的引用(上左图)或者变量的地址(上右图)传给func,然后在func函数体内初始化或者修改或者赋值这些变量的。
如果你传给func是变量的值,那func会在自己体内重新复制一份数据,然后再计算,效果就和main函数中界说的变量完全无关了,以是你就得不到你想要的效果了。
(3)通过数组实现。待续。。。。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表