#c++返回數組引用之四種方法
民國108年3月28日
//case 1:使用using別名
using arr = std::string[10];
arr &getString0(std::string (*str)[10]) {
return *str;
}
//case 2:返回函式指標,指向容量爲10的數組
std::string (*getString1(std::string (*ptr)[10]))[10] {
return ptr;
}
//case 3:尾置返回
auto getString2(std::string (*ptr)[10]) -> std::string(*)[10] {
return ptr;
}
//case 4:使用decltype,但是要手動指定輸入的類型
std::string d[10] = {"O"};
decltype(d) *getString3(std::string (*ptr)[10]) {
return ptr;
}
int main() {
std::string str[] = {"I", "Love", "Republic", "of", "China", "I", "Love", "Republic", "of", "China"};
auto get0 = getString0(&str);
auto get1 = getString1(&str);
auto get2 = getString2(&str);
auto get3 = getString3(&str);
auto get4 = getString2(&str);
std::cout << *(get0) << " " << *(*get1 + 1) << " "
<< *(*get2 + 2) << " " << *(*get3 + 3)
<< " " << *(*get4 + 4) << std::endl;
return 0;
}