5장. 구현

보물창고·2021년 8월 18일
0

이펙티브 c++

목록 보기
6/6

항목 26. 변수 정의는 늦출 수 있는 데까지 늦추가

예시

  • 1번 과정

    : 만약에 inData값이 20보다 작다면, 위에서 string word 선언한 값은
    무용지물되는 것이다.
    생성자와 소멸자가 바로 호출되는 것이므로 좋지 않은 코드이다.

  • 2번 과정

    : 1번 보다 나아지긴 했지만, 기본 생성자 - 대입연산자 - 소멸자가 호출된다.
    더 축소할 수 있다.

  • 3번 과정

    : 차라리 선언과 동시에 초기화함으로써, 복사 생성자 - 소멸자
    단 2가지의 함수 호출하는 것이 훨씬 좋다.

변수 정의를 늦출수 있는 데까지 늦추고, 선언과 동시에 바로 초기화하려고 하자!

항목 27. 캐스팅은 절약하자.

  • dynamic_cast : 런타임 비용이 높다.

  • 문자열 비교함수인 strcmp가 dynamic_cast로 만들어졌다.

dynamic_cast 을 피하기 위해서는 어떻게 해야할까?


-> 스마트 포인터를 이용해 벡터에 집어넣고, 사용할 수 있다.

정말 피해야 하는 설계

: 여러 파생클래스를 만들어 놓고, 조건문에 따라 dynamic_cast해서 사용하는 경우이다.
왜냐하면 파생클래스가 늘어날때마다 코드가 계속해서 늘어나므로.

profile
🔥🔥🔥

0개의 댓글