【发布时间】:2021-02-05 20:54:18
【问题描述】:
std::vector<std::string> func(int num) {
std::vector<std::string> vec;
int sum = 0;
for(int i = 0; i < num; i++) {
sum +=i;
std::string s = std::to_string(sum);
vec.emplace_back(s);
}
return vec;
}
下面的代码使用右值和左值引用有什么区别。
std::vector<std::string> res = func(10); // (case 1)
std::vector<std::string> &&res = func(10); // (case 2)
std::vector<std::string> &res = func(10); // I got an error!, case3
const std::vector<std::string> &res = func(10); // case4
问题:
- 右值引用(案例2)可以保存内存副本吗?比案例1
- 为什么 lvalue reference(case3) 出错但它与
const(case4) 一起工作?
【问题讨论】: