• 티스토리 홈
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 6
        2022년 09월 06일
        • starryeye
        • 작성자
        • 2022.09.06.:29
        반응형

        이번엔 캐스팅과 관련된 temporary를 알아보자.

         

        Base 클래스는 부모 클래스

        Derived 클래스는 자식 클래스로 사용되고 있다.

        부모, 자식 클래스 모두 value라는 맴버 변수를 선언하였다.

         

         

        main() 함수를 보자..

        Derived 클래스(자식 클래스)의 지역 변수 객체 d를 선언하였다.

        d.value는 당연하게도 20이 출력된다.

         

        25 line에서는

        d를 Base&로 타입 캐스팅 하였다.

         

        27 line에서는

        d를 Base로 타입 캐스팅 하였다.

        여기서..

        지난번 temporary가 반환 될때의 포스팅에서와 동일하게..

        d가 Base 타입의 임시객체로 복사되어 만들어진다.

        그리고 생성된 임시객체의 value를 출력하게 된다.

         

         

        27 line이 임시객체가 만들어진 증명은

        34 line에서 보여주고 있다.

        임시 객체는 등호 왼쪽에 위치 할 수 없다.

         

         

        마지막으로 임시객체에 대해 한번 정리 해보자..

        <결론>

        임시 객체는 ...

        1. 개발자가 의도적으로 만든다.

        -> 주로.. 함수 인자 f1(Point(1, 2)) 로 사용함

        2. 값 타입으로 반환하는 함수, 값 타입으로 캐스팅 등을 할 때 생성된다.

        -> 임시 객체의 생성/파괴 가 이루어지므로 성능저하의 원인이 될 수 있다.

        -> 생각지도 못한 로직이 될 수도 있다. (Temporary5 포스팅의 Counter 객체 참조)

        반응형

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

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

        티스토리툴바