본문 바로가기

modern effective c++3

effective modern c++ chap.4 1. 소유권 독점 자원의 관리에는 std::unique_ptr를 사용하라 std::unique_ptr: 독점 소유권 의미론을 가진 자원의 관리를 위한, 작고 빠른 이동 전용 스마트 포인터 - 생 포인터와 같은 크기 - 널이 아닌 항상 자신이 가리키는 객체를 소유(즉, 이동 시 소유권이 원본 포인터에서 대상 포인터로 옮겨짐) - 복사가 허용되지 X - 널이 아닌 std::unique_ptr는 소멸 시 자신이 가리키는 자원을 파괴 - 개별 객체를 위한 것(std::unique_ptr)과 배열을 위한 것(std::unique_ptr)으로 분류 - 기본적으로 자원 파괴는 delete를 통해 일어나나, 커스텀 삭제자를 지정 가능 ex) - std::unique_ptr를 std::shared_ptr로 손쉽게 변환 .. 2020. 3. 2.
effective modern c++ chap.3 7. 객체 생성시 괄호(())와 중괄호({})를 구분하라 기존의 변수 초기화 방법에, 중괄호 초기화 방법을 더해 총 4가지의 방법으로 변수를 초기화 이번 항목의 나머지 부분에서는 이러한 등호와 중괄호 구문은 무시 ->대체로 C++은 이를 중괄호만 사용한 구문과 동일하게 취급하기 때문에 (1). 이전에는 표현할 수 없었던 방식의 객체 생성을 표현 가능 (2). 비정적 데이터 멤버의 기본 초기화 값을 지정하는 데에도 사용되는데 C++에서는 괄호 없이 "="만 있는 초기화 구문으로도 사용 가능 그러나 복사할 수 없는 객체는 중괄호나 괄호로는 초기화 가능, "="로는 초기화 불가 (3). 내장 기능들 사이의 암묵적 축소 변환(narrowing conversion)을 방지 (4). C++의 가장 성가신 구문 해석.. 2020. 2. 24.
effective modern c++ chap.2 5. 명시적 타입 선언보다는 auto를 선호해라. auto 타입 장점 -반드시 초기화 필요 -이식성 또는 효율성 문제를 유발할 수 있는 타입 불일치가 발생하는 경우가 거의 없음 -변수의 타입을 명시적으로 지정할 때보다 타자량 더 적음 -초기화 표현식의 타입이 변하면 자동으로 변화하기에 리펙터링이 수월해짐 auto 타입의 문제점 -함수의 반환 타입이나 람다 매개변수에 쓰인 auto에 대해서는 auto 타입 추론이 아니라 템플릿 타입 추론이 적용 >중괄호 초기치를 돌려주는 반환 타입으로 auto로 지정하면 컴파일이 실패 -보이지 않는 프록시 타입 때문에 auto가 초기화 표현식의 타입을 잘못 추론할 수 있음 ->auto를 잘 활용하면 타자의 양이 줄어들 뿐만 아니라 형식을 직접 지정했을 때 겪게 되는 정확성.. 2020. 2. 17.