나는 내가 다음 하나에 매우 similary 코드 본 일 : 나는 원래의 코드를 재현 할 수없는 분명한 이유임시 객체 유형과 생활 시간 프로젝트에서
std::string str = (std::string() += "some string") += "some other string";
을,하지만 난 그것을 정의 String
를 사용하여 말할 수있다 operator<<
은 std::string
의 경우 operator+=
과 동일한 동작을합니다.
불필요한 임시 개체의 생성/제거 옆에 무언가가 매우 잘못되었다고 느낍니다. 그러나 정확히 무엇이 모르는 지요.
임시 개체는 const
입니까? 그렇습니다. operator +=
이 개체를 변형시키기 때문에이 코드가 어떻게 컴파일됩니까 (VS2010)? 여기에 문제가 무엇인지 설명해 주시겠습니까?
이것은 "연산자 +"문자열과 연관된 "초과"임시 객체를 방지하려는 잘못된 시도처럼 보입니다. – John
여기서 가장 중요한 점은 매우 추악하고, 독립적이며, 직관적이지 않은 코드라는 것입니다. –