c++ 函数的返回值

函数返回值


  1. 不要返回局部对象的引用或者指针
  2. 引用返回左值,其他返回类型得到右值
  3. main函数返回值中,0表示成功,其他表示识别。

列表初始化返回值


c++ 11新标准规定, 函数可以返回花括号包围的值列表。其实,就是使用列表初始化的方式对表示函数返回的临时变量进行初始化。

vector<string> process()
{
    return {"funca", "funcb"};
}

返回数组指针

因为数组不能被拷贝, 所以不能返回数组。 不过函数可以返回数组的指针或引用, 只是返回类型的定义比较繁琐。

int  (*func(int i))[10] {} // 表示返回一个大小为10,类型为int型的数组。

如果不想定义这么复杂,可以使用类型别名的方式;

typedef int Array[10]; // Array是一个类型别名

Array* func(int i){}

使用尾置返回类型


同样是c++ 11标准, 任何函数都可以定义尾置返回,只是这种方式更适合用在定义返回类型比较复杂的函数,比如返回类型是数组的指针或引用的。

auto func(int i) -> int(*)[10]

使用decltype


如果你已经知道函数返回的指针指向哪个数组,那么就可以使用decltype,它不会把数组转换为指针

int a = {1, 2, 3};
decltype(a) * func(int i);
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值