const string getStr()
{
return "aaaa";
}
char &get_val(string &str, string::size_type ix)
{
return str[ix];
}
int odd[]{1,2,3,4,5};
int even[]{6,7,8,9,0};
//decltype:并不负责把数组类型转换成对应的指针,所以decltype的结果是个数组,想要函数返回指针必须加一个*
decltype(odd) *arrp(int i)
{
return (i % 2) ? &odd : &even;
}
int main()
{
//函数返回,返回的值和初始化变量一样
string str = getStr();
str += "bbb";
cout << str << endl;
//调用一个返回引用的函数得到左值,其他返回得到右值
string s("abcdefg");
cout << s << endl;
get_val(s, 0) = 'A';
cout << s << endl;
//返回数组指针,因为数组不能拷贝,所以函数返回的是数组的指针或引用
//使用decltype
//int (*oodp)[5] = arrp(1);
return 0;
}
本文深入探讨了C++中不同类型的函数返回值,包括字符串、引用和数组指针的处理方式。通过具体代码示例,讲解了如何使用decltype来获取函数返回类型,并展示了返回引用与返回值的区别。
2019

被折叠的 条评论
为什么被折叠?



