본문 바로가기

C++11

C++는 C가 아니다: 이식성 많은 사람들이 알고 있겠지만, C++ 언어와 C 언어는 많은 부분을 공유하지만, C++ 언어는 공식적으로 C 언어를 계승하는 것은 아니다. C++ 표준화 의원회와 C 표준화 의원회는 서로 긴밀히 협조하기는 하지만, 같은 개발 공동체가 관리하고 있지 않다. 물론, C#과 C의 관계보다는, C++과 C의 관계가 훨씬 밀접하다. 그러나, C++의 복잡한 기능 때문에 고질적으로 컴파일러의 이식성 문제가 따라다니며, 어떤 플랫폼에서도 C++로 작성된 코드를 직접 바인딩하는 것은 쉬운 문제가 아니다. 안드로이드는 NDK를 통해 C/C++를 사용하여 시스템 내부로 접근할 수 있지만, NDK는 성능이 중요한 영역에서 보조적인 수단일 뿐이며, 프레임워크 개발 언어인 자바를 대체할 수 없다. 더구나, 안드로이드가 사용하는.. 더보기
C++의 새로운 표준, C++0x에서 C++11으로 지난 8월 15일, C++0x가 드디어 ISO 회의에서 만장일치로 통과되었다. C++0x는 이제 C++11로 불려질 것이다. 언어 자체의 기능으로 가장 주목을 받는 것은 단연 rvalue reference와 람다 함수다. 표준 라이브러리에 새롭게 추가되는 기능들은 사실 boost에서 이미 지원하고 있었기 때문에 그렇게 커다란 차이를 느끼기는 힘들 것이다. 람다 함수는 특정 범위(scope)에서 이름 없는 함수로 동작하면서 람다 함수 내부에서 외부의 어떻게 변수를 사용할 수 있는지 명확하게 지정할 수 있지만([]), 기존의 함수자(functor)와 개념상으로 큰 차이는 없다. 따라서, C++11이 기존 C++ 사용자들에게 커다란 충격을 줄 부분은 단연코 rvalue reference다. 간단히 말해, rv.. 더보기