변수 문자열로 지정하지 않고 참조로 함수에 반환 된 문자열을 전달 :내가 함수로 정의
void func(string & str_alias)
{...}
그리고 내 주요 기능에
int main()
{
string a;
func((a="Cat said: ")+"Meow");
}
컴파일러는보고 것이라고 나는에 주요 기능을 변경하면 내가 알고 있지만
no known conversion for argument 1 from ‘std::basic_string<char>’ to ‘std::string& {aka std::basic_string<char>&}’
:
int main()
{
string a;
func(a=((a="Cat said: ")+"Meow"));
}
코드가 문제없이 통과합니다. 하지만 여전히 반환 된 문자열을 참조로 함수에 전달할 수없는 이유가 궁금합니다. 왜 다른 문자열 변수에 할당해야합니까?
감사합니다.
'std :: string :: operator ='는 스트림에 대한 참조를 반환합니다. 'std :: string :: operator +'는 결과 연결의 복사본을 반환합니다. 이 복사본은 rvalue이며 lvalue-reference에 바인딩 할 수 없습니다. – 0x499602D2
"stream"이라고 말하면 나는 "string"을 의미했습니다. 그리고 lvalue-reference는 const가 아닌 lvalue-reference를 의미합니다. 왜냐하면 rvalue가 const lvalue-reference에 실제로 바인딩 될 수 있기 때문입니다. – 0x499602D2