레퍼런스는 무명객체를 참조할 수 없는건가요?
글쓴이: dltkddyd / 작성시간: 화, 2014/05/20 - 11:41오전
string& sc=string("tomato");
식의 참조는 불가능한 것으로 컴파일시 오류가 발생합니다. 그런데 const를 맨 앞에 붙이면 또 참조가 되고요. 저 무명객체를 상수가 아닌 string로는 참조할 수 없는것인가요? 참조라는 것은 꼭 변수 내지는 이름이 있는 객체를 대입받아야 하는 것인가요?
이거 시점의 문제인 것 같은데요. 뭐 이런걸까요? const 레퍼런스는 컴파일시에 참조로 역이고 그냥 레퍼런스는 실행시에 참조로 역인다. 이런 이유 때문인지 궁금합니다.
Forums:
?
http://blog.naver.com/muscly/60046226535
위 블로그 내용을 참조해보시면 이해가 가실 것 같습니다.
당연히 Rvalue 를 일반 레퍼런스로 참조하게 하는 것은 표준상 허용되지 않습니다.
이런 경우에는 Rvalue reference(&&) 를 이용해야 합니다.
문득 참고서적 보고 문득 질문이 떠오르길래 올리는 글입니다.
저 질문도 사실은 Effective C++을 읽다고 떠오른 생각이었습니다. 그런데 보다 궁금한 것이 이겁니다.
저렇게 정의한 복사대입연산자 문제가 있겠죠? 생성자에서 애초에 값을 할당시에 모두 레퍼런스로 참조했으니 만약 동일한 string 객체 test1을 참조하는 NameObject 객체가 있다면 대입연산자에서 값이 바뀔 때 다른 그 객체 역시 값이 바뀔테니까요. 어떤 식으로 operator를 만드는 것이 좋을까요? 애초부터 생성자에서는 참조로 nameValue를 설정해버렸으니 저 레퍼를 따로 다른 공간을 참조하도록 만들수도 없는 노릇이고요. 지금 계속 고민중입니다.
고민 중에 문득 떠오른 생각입니다.
멤버에 레퍼런스를 선언하는 것은 좋은 코드가 아니지 않나요? 다른 객체와 계속 겹치는 문제가 발생하잖아요. 참고서적의 이 예문은 학습목적으로 멤버에 레퍼런스를 언급한 것 같기도 한데, 혹시라도 해서요. 실무에서 저 레퍼런스 멤버가 객체에서 정말 실용적으로 사용되는지요?
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
문제가 있고 없고는 어떤 클래스냐로 정해지는 거죠.
문제가 있고 없고는 어떤 클래스냐로 정해지는 거죠. 문법상의 문제가 없으니까요.
의도적으로 그렇게 짤 수도 있는거죠.
복사를 통해서 참조하고 있는 대상을 바꾸고 싶은거라면 참조 변수가 아닌 포인터 변수를 이용하면 됩니다.
어떤 경우인지 감이 잡힙니다.
그럼 공유하는 자원에 대해서는 레퍼런스 멤버도 괜찮겠군요.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기