在C\C++中,后置单目运算符相对于前置单目运算符具有更高的优先级,而各种声明也深受影响。
一个返回数据引用的函数声明的写法的思路:
T func(); //函数声明
string(*arrp)[11]; //数组引用声明
func()[11] ???
//代码效果参考:http://www.zidongmutanji.com/zsjx/215897.html
(func(int))
(func(int))[11]
string(*func(int))[11];
使用类型别名:
typedef string arr[11];
arr& func();
使用尾置返回类型:
auto func()->string(&)[11];
使用decltype关键字:
string strs[11];
decltype(strs) &func();
直接编写返回数组引用的函数比较烦琐且不易理解,使用类型别名、尾置返回类型和decltype关键字可以简化这一过程。