- 1.函数体
- 2.函数返回类型
- 隐式返回:没有写return,常见的就是void函数。main函数是比较特殊的函数,所以他虽然是int main(),但是最后也可以不返回,也就是隐式返回,此时默认返回是0。
- 返回初始化列表需要注意:
- 返回自动自动对象的引用或指针(和上面的initializer_list错误原因相同):
- 非法:使用自动对象
- 合法:使用局部静态对象,提高引用对象或指针的声明周期
- 返回值优化
返回值优化,是把x直接在res上进行构造,而不用进行两次拷贝构造。
另外,C++17对返回临时对象的强制优化,其实就是把上面的返回值优化进行强制实施,因为C++17之前不同的编译器优化与否不一定,但是C++17中标准就确定一定要优化。
临时对象:
Str( fun()
{
return Str{}; // 临时对象,C++17一定会优化
}
2.函数返回类型
- 函数返回类型位于函数头后部:
- 返回类型自动推导
- 结构化绑定:C++17引入的语法糖
- C++17 nodiscard属性:



