2017-11-18 1 views
1

일반적으로 참조가 함수에서 반환되면 반환 변수는 valuetype입니다.복사 ctor가없는 참조 반환

질문 변수가 이미 참조 변수 인 것은 허용됩니까?

아래 코드를 참조하십시오. 나는 (명시 적으로 myObject에 대한 삭제) 복사 ctor에

myObject& foo() 
{ 
    for(auto iter = myMap.begin(); 
    iter != mymap.End(); 
    ++iter) 
    { 
    if(trueCondition) 
    { 
     //iter->second is 
     // shared_ptr<myObject> 
     myObject& toBeReturned= *(iter->second); 

     return toBeReturned; 
    } 
    } 

throw std::exception(""); 
} 
+2

참조를 반환 할 수 있습니다. 참조가 반환되는 객체의 수명을 적절하게 관리해야한다는 것을 기억해야합니다. – paweldac

답변

0

은 예 확실히을-살 것이다 객체에 대한 참조를 반환 할 수 있습니다를 피하기 위해 참조로 반복자 shared_ptr의에서 myObject에을 읽을 필요 참고.