이 질문은 어딘가에있을만큼 기본적인 것 같지만 그 답을 찾을 수없는 것 같습니다. 가정하자오브젝트 및 대입 연산자에 대한 참조 선언하기
이 코드를 가지고 :
//class member function
std::map< std::string, std::string > myMap;
const std::map< std::string, std::string >& bar()
{
return myMap;
}
void myFunc(std::map< std::string, std::string >& foo1)
{
foo1 = bar();
std::map< std::string, std::string >& foo2 = bar();
}
나의 이해는 내가에서는 foo2 무엇 막대와 같은 인스턴스에 대한 참조()가 반환이기 때문에,에서는 foo2를 사용하기 시작하면, 나는에서는 foo2와 함께 할 아무것도 될 것입니다 myMap에 반영됩니다. 하지만 foo1은 어떨까요? foo1은 myMap의 복사본을 얻는가, 또는 bar()가 반환하는 것과 같은 인스턴스를 가리키고 있는가? C++ 표준 라이브러리에 따르면 std :: map에 대한 대입 연산자는 요소를 복사하지만 그 다음에는 할당 연산자가 foo2의 선언에서 실제로 호출되지 않는다는 의미입니까?
감사합니다. (즉 map
의 할당 연산자가하는 일이기 때문에)
+1 감사합니다. 새로운 것을 배웠습니다. 나는 방금 테스트를했고, 나는 정말로 절대적으로 100 % 틀렸고 당신은 맞습니다 = -) – flumpb
좋습니다. 고마워, 내가 정말로 알아야 할 것은 대입 연산자가 foo1에서 호출되었고 foo2에서 호출되지 않았다는 것이다. 좋은 설명, 고마워! – bhh1988
@Luc 가능한 경우 참조 변수가 일반적으로 사용되지 않는 이유는 무엇입니까?나는 그들이 무엇인지 (당신의 대답 덕택에) 더 잘 이해할 수 있지만, 코더들은 일반적으로 그것에 대한 조언을 선호한다. 이중화인가요? 제한된 범위? –