C++之函数的返回值:返回值是引用类型、返回值是指针类型、返回值是初始化列表、返回值由关键字decltype推断、尾置返回值类型

函数的返回值

(1)返回值是引用类型

调用一个返回引用的函数得到的是左值,其他类型返回的是右值,如果返回的是引用,那么在实际工程中最好是函数的引用型传入参数

(2)返回值是指针类型

如果函数返回的是指针,并且是函数体中的局部变量,那么要求该指针指向的是堆内存中的一块空间,即该局部指针所指向的内存空间是由new或malloc开辟的

注意:更准确地说,只有位于堆中的内存块作为函数的指针返回值是被允许的

//在堆内存中开辟的局部变量是被允许的
Worker * createWorker()
{
	Worker *ptrWorker = new Worker("zhangsan");
	return ptrWorker;
}

//在非堆内存中开辟的局部变量不被允许
Worker * createWorker()
{
	Worker wk("lisi");
	return &wk; 	//这种指针类型的返回是不被允许的
}

(3)返回值类型是初始化列表

所谓初始化列表initializer_list本质是一个元素序列的包装器,而不是容器。
常用于初始化序列数据,也可作为函数的参数(在不知道有多少数据时),同样也可作为函数的返回值

std::initializer_list<int> get_list()
{
	return {1976, 1978, 1998, 2008, 2015, 2020, 2024, 2026};
}

(4)返回值由关键字decltype推断给出

关键字decltype用于在编译时推导表达式的类型

int a[] = {1,3,5};
int b[] = {2,4,6};
decltype(a) *getArrPtr(int i)
{
	return 	(i % 2 ==0) ? &a : &b;
}

(5)尾至返回值类型

是 C++11 标准中引入的新特性。它允许将函数的返回类型放在形参列表之后,使用->符号来指定

主要作用是方便复杂函数的声明和定义,使代码更加清晰易读。特别是在函数返回类型比较复杂,或者需要结合decltype来推导返回类型的情况下,尾置返回类型非常有用

在这里插入图片描述


================================================================================
若读者对C++感兴趣,欢迎阅读笔者在学习C++过程中的关于其知识点的总结系列,入口如下:

C++知识点总结全系列文章索引:
【C++知识点总结全系列 (01)】:数据类型、数据类型转换和变量
【C++知识点总结全系列 (02)】:C++中的语句、运算符和表达式详细总结
【C++知识点总结全系列 (03)】:函数(函数参数传递、可变参数、函数返回值等详细介绍)
【C++知识点总结全系列 (04)】:C++类的详细总结与分析
【C++知识点总结全系列 (05)】:IO 类的详细总结和分析
【C++知识点总结全系列 (06)】:STL六大组件总结- 配置器、容器、迭代器、适配器、算法和仿函数
【C++知识点总结全系列 (07)】:模板与泛型编程详细总结与分析
【C++知识点总结全系列 (08)】:面向对象编程OOP


相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 11:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 11:00:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 11:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-17 11:00:03       69 阅读

热门阅读

  1. baomidou @DS注解

    2024-07-17 11:00:03       22 阅读
  2. arkts中状态管理

    2024-07-17 11:00:03       25 阅读
  3. mac如何查看cpu和显卡温度

    2024-07-17 11:00:03       26 阅读
  4. 关于HBase、Phoenix、Flume、Maxwell 和 Flink

    2024-07-17 11:00:03       24 阅读
  5. 银河麒麟如何部署QtMqtt(入门案例教程)

    2024-07-17 11:00:03       24 阅读
  6. Android中ContentProvider学习记录

    2024-07-17 11:00:03       22 阅读
  7. IPython 宏魔法:%macro 命令的高效使用指南

    2024-07-17 11:00:03       24 阅读
  8. 五、python列表

    2024-07-17 11:00:03       26 阅读