• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Modern C++ 정리] Temporary 3
        2022년 09월 06일
        • starryeye
        • 작성자
        • 2022.09.06.:28
        반응형

        함수 인자에 temporary를 사용할 때를 알아 보겠다.

         

        이전 포스팅과 동일한 Point 클래스 선언

         

        foo 함수는 함수 인자로 포인트 객체를 요구한다.

        상수 참조 자료형 사용 (이전 포스팅 참조)

        상수 이므로 함수 내부에서는 pt를 수정 할 수 없다.

         

        goo 함수는 함수 인자로 Point 객체의 reference를 받도록 하였다.

        개발자의 의도는 인자로 받은 객체를 수정하고 싶다는 것이다. (상수 const 키워드를 뺌)

        하지만..

        해당 인자 자료형으로는 임시 객체를 받을 수 없다.

        (이유는.. main 함수에서 사용하는 코드에서 알아보겠다..)

         

         

        main() 함수를 보겠다.

        이름 있는 객체 pt를 선언하고..

        이를 foo 함수에 넣어주었다.

        (상수 참조 자료형으로 넣음)

        pt는 main() 함수가 끝나는 시점에 파괴 될 것이다.

         

         

        foo() 함수에 임시 객체를 인자로 넣어주었다.

        (상수 참조 자료형으로 넣음)

        임시 객체는 foo함수 인자로 전달 후, 31 line이 끝나는 순간 바로 파괴 된다.

         

        goo() 함수에 임시 객체를 인자로 넣는 시도를 하였다.

        이는 에러이다.

        이유는..

        임시 객체는 등호의 왼쪽에 올 수 없으며(lvalue가 아님)

        등호에 오른쪽에 올 수 있다.(rvalue 이다.)

        하지만.. goo()함수 인자로 const가 없어 상수성이 없으므로 수정하겠다는 의도 이므로..

        서로 모순이다.

        따라서, 임시 객체는 reference로 넘길수 없다.

         

        <참고>

        임시 객체를 넘기고 수정을 하고 싶다면..

        임시 객체 자체는 상수 참조로 넘긴 순간 수정이 불가능 하지만..

        함수 내부에서 복사를 따로 하고 수정하여 사용할 수는 있을 것이다.

         

        반응형

        'C++' 카테고리의 다른 글

        [Modern C++ 정리] Temporary 5  (0) 2022.09.06
        [Modern C++ 정리] Temporary 4  (0) 2022.09.06
        [Modern C++ 정리] Temporary 2  (0) 2022.09.05
        [Modern C++ 정리] Temporary 1  (0) 2022.09.05
        [C++] template  (0) 2022.08.14
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바