임시객체 함수 인자로 사용
글쓴이: vani2 / 작성시간: 월, 2013/09/23 - 8:36오후
임시객체를 함수 인자로 사용할때 다음과 같이 레퍼런스로 전달해도 문제 없나요??
말그대로 임시객체라 다음줄로 넘어가면 소멸될 것 같은데 잘되네요..
void C(const Temp& t);
void C2(const Temp t);
C(Temp());
C2(Temp());
둘다 잘 돌아가지만 문제는 없을지..?
추가-
복사 생성자의 프로토타입은 const 객체를 받던데 const 객체가 아니여도 되나요?
...
Temp(const Temp& t);//복사생성자
...
Temp temp();
Temp temp2= temp;//const객체가 아님
Forums:
질문과는 상관이 없지만...
이렇게 풀어서 사용하는것이 보기 좋습니다.
fn(sizeof(DATA)); 이런것을
int size = sizeof(DATA);
fn( size ); 이렇게 말이죠.
제 경험으로는 프로그램 개발중에 const를 사용해본 적이 없습니다. ㅡ_ㅡ;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
@plusb : >> 임시객체를 함수 인자로
@plusb :
>> 임시객체를 함수 인자로 사용할때 다음과 같이 레퍼런스로 전달해도 문제 없나요??
네 문제 없습니다.
어떤 함수에 레퍼런스로 전달된 임시 객체는 함수 호출이 끝날 때까지 살아있습니다.
>> 복사 생성자의 프로토타입은 const 객체를 받던데 const 객체가 아니여도 되나요?
네 가능합니다. 하지만 그래야할 이유가 없습니다.
항상 const 객체를 받도록 작성하는 것이 좋습니다.
@shint :
>> 제 경험으로는 프로그램 개발중에 const를 사용해본 적이 없습니다.
매우 잘못된 습관입니다.
c++의 가장 큰 강점 중 하나가 const 입니다.
가능한 한 많은 곳에 const를 사용하는 것이 좋습니다.
오호..
명쾌한 설명 감사드립니다.
덕분에 잘 이해가 되었습니다.
아참, 그리고 두번째 질문에 문제 설명이 부족했던것 같아서 다시 올립니다..
제 질문의 의의를 다시 설명드리자면
const객체의 '매개변수'에 const객체가 아닌 일반 객체'인자'를 넣었을 경우 자동으로 const객체가 되는지 알고 싶습니다.
그런데 이 경우 const객체인데 어떻게 복사 생성을 할 수 있는지 궁금하군요..
임시객체에 대한 문서가 별로 없어서 해맸는데 해결했네요!
const 객체의 '어떤 함수의 매개 변수'로 일반
const 객체의 '어떤 함수의 매개 변수'로 일반 객체를 넣었다는 것인지 모르겠으나, const 객체라면 const 키워드가 달린 멤버함수만 호출이 가능합니다.
그렇다면 같은타입의 const 객체에 const가
그렇다면 같은타입의 const 객체에 const가 붙지않은 같은 타입의 객체를 대입할 수 있나요? 혹은 반대의 경우도 가능한가요?
답을 해드리고 싶지만... 직접 해보세요. 어려운
답을 해드리고 싶지만... 직접 해보세요. 어려운 일도 아니데요.
그래야 머리에 남습니다. 해보고 이해가 안되는 사항을 질문하세요.
음...
그게.. 된다는건 알고있지만, const객체가 매개변수인데 const객체가 아닌 객체를 인자로 받는 것에 대해 원리가 궁금합니다.
지금 뭔가 용어를 혼동하고 계신듯합니다. const
지금 뭔가 용어를 혼동하고 계신듯합니다.
const int a = 1;
이건 대입이 아닙니다. 초기화입니다.
const 객체에 대해서는 const가 붙은 함수만
const 객체에 대해서는 const가 붙은 함수만 호출 할 수 있다고 하였습니다.
대입은 대입 연산자라는 함수를 호출하는 구문입니다.
대입 연산자에 const가 붙어있나 안붙어있나 찾아보시고, 붙어 있을수 있나 없나 생각도해보세요.
댓글 달기