练习6.36
string (&func(int i))[10];
练习6.37
使用类型别名:
typedef string arrT[10]; //arrT是一个类型别名,它表示的类型是含有10个字符串的数组
arrT& func(int i);// func返回一个含有10个字符串的数组的引用
使用尾置返回类型:
//func接受一个int类型的实参,返回一个引用,该引用绑定含有10个字符串的数组
auto func(int i)->string(&)[10];
使用decltype关键字:
string s[] = { "ab","is","ab" };
decltype(s)& arrRef(int i) {
}
第二种感觉比较直观。
练习6.38
int odd[] = { 1,3,5,7,9 };
int even[] = { 2,4,6,8,10 };
decltype(odd)& arrRef(int i) {
return (i % 2) ? odd : even;
}
int main(){
int a = 10;
cout << arrRef(a)[0]; //返回even数组的引用,数组的第一个元素值为2.
}