본문 바로가기

전문가를 위한 C++ 책을 읽고 몇 가지 정리 C++ 11관련해서 외울 필요가 있는 몇가지 정리 1. 신규 타입auto 타입 : auto i = 7;decltype(expr) 타입 : decltype(i) j = 8; // i의 타입을 따라 j타입 지정 2. auto를 사용해서 for 루프 간편하게int arr[] = {1,2,3,4}; // 다른 컨테이너도 사용가능for(auto& i : arr) {i += 2;} 3. 고정 배열의 경우 std의 array사용std::array arr = {9,8,7};for (auto i : arr)cout 더보기
Modern C++ auto에 관해서 C++ 11이후로 auto 선언을 통한 형식 영역이 가능하게 되었다. 하지만 기존 C++를 쓰던 사람들은 auto로 떡칠된 코드를 상상하면 걱정부터 든다. 따라서 나를 포함해서 auto 사용에 거부감이 드는 사람들이 꽤나 있을 것 같다. Effective Modern C++에서 scott옹이 이 문제를 다룬 챕터를 요약했다. 결론부터 말하자면 당연하게도 auto 사용을 권장한다. 명시적 형식 선언보다는 auto를 선호하라. auto를 잘 활용하면 타이핑의 양이 줄어들 뿐만 아니라, 형식을 직접 지정했을 때 겪게 되는 정확성 문제와 성능 문제도 방지 할 수 있다. 예 1) auto를 사용함으로써 초기값을 설정하지 않아서 발생하는 정확성 문제를 원천 봉쇄할 수 있다.int x1; // 문맥에 따라서는 초기화.. 더보기
Modern C++ 스마트 포인터 스마트 포인터의 필요성이야 말할 것도 없지만, 그 동안 STL에서 제대로된 스마트 포인터를 지원 해 주지 않아서 대부분 외부 라이브러리를 쓰거나 Boost의 그것을 쓰곤 했다. 그런데 C++ 11, 14를 거쳐 자체 스마트 포인터를 써도 되지 않을까 하는 수준에 이르렀기에 기대가 크다. 지금 부터는 Effective Modern C++ 에서 발췌한 스마트 포인터에 관한 정리다. Raw Point (날 포인터)를 사랑 하기 힘든 이유. - 선언만 봐서는 하나의 객체를 가리키는지 배열을 가리키는지 구분할 수 없다. - 선언만 봐서는 포인터를 다 사용한 후 포인터가 가리키는 객체를 독자가 직접 파괴해야 하는지 알 수 없다. - 구체적으로 어떻게 파괴해야하는지에 대한 정보를 얻을 수 없다. - delete를 이.. 더보기