1
#include <vector>
using namespace std;
struct TempData {
vector<int> data;
TempData() {
for(int i = 0; i < 100; i++) data.push_back(i);
}
// vector<int> GetData() { // function 1
// return move(data);
// }
vector<int>&& GetData() { // function 2
return move(data);
}
};
int main() {
vector<int> v;
{
TempData td;
v = td.GetData();
}
}
function 1
과 function 2
의 차이점은 무엇입니까?멤버 함수 반환 값 멤버 변수의 rvalue 참조
function 1
vector
을 move(data)
으로 구성한 다음 vector
을 v
으로 지정 하시겠습니까?
더 이상 자세한 내용은 차이가 가능성이없는 당신의 작은 테스트 케이스에서 ...
한 함수는 새 벡터를 반환하고 다른 함수는 반환하지 않습니다. –
참조 한정자에 대한 오버로드를 고려해야합니다. https://stackoverflow.com/questions/21052377/whats-a-use-case-for-overloading-member-functions-on-reference-qualifiers를 참조하십시오. –
이 작업을 수행해야하는 경우, 그렇다면 당신은 그것을 돌려 줄 필요가 없습니다. – keith