상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 C++11의 주요 특징은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++11은 C++ 프로그래밍 언어의 중요한 업데이트로, 여러 가지 새로운 기능과 개선 사항을 도입하여 프로그래머의 생산성을 높이고 코드의 안전성을 강화했습니다. C++11의 주요 특징은 다음과 같습니다. 1. 자동 타입 추론 (Auto) `auto` 키워드를 사용하면 컴파일러가 변수의 타입을 자동으로 추론할 수 있습니다. 이는 코드의 가독성을 높이고, 복잡한 타입을 명시적으로 작성할 필요를 줄여줍니다. ```cpp auto x = 42; // x는 int로 추론됨 auto y = 3.14; // y는 double로 추론됨 ``` 2. 범위 기반 for 루프 C++11에서는 범위 기반 for 루프를 도입하여 컨테이너의 요소를 쉽게 순회할 수 있게 되었습니다. 이는 코드의 간결성을 높이고, 반복문에서 발생할 수 있는 오류를 줄여줍니다. ```cpp <a href='https://sangseek.com/sangseeks/std::vector/ko'>std::vector</a><int> vec = {1, 2, 3, 4, 5}; for (auto& value : vec) { std::cout << value << " "; } ``` 3. <a href='https://sangseek.com/sangseeks/스마트 포인터/ko'>스마트 포인터</a> C++11에서는 `std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`와 같은 스마트 포인터를 도입하여 메모리 관리의 안전성을 높였습니다. 이들은 메모리 누수를 방지하고, 자원 관리를 자동화합니다. ```cpp std::unique_ptr<int> ptr(new int(10)); // unique_ptr 사용 ``` 4. 람다 표현식 람다 표현식은 함수 객체를 간편하게 정의할 수 있는 방법을 제공합니다. 이를 통해 코드의 가독성을 높이고, <a href='https://sangseek.com/sangseeks/일회성/ko'>일회성</a> 함수 정의를 쉽게 할 수 있습니다. ```cpp auto add = [](int a, int b) { return a + b; }; std::cout << add(3, 4); // 7 출력 ``` 5. 이동 시맨틱 (Move Semantics) C++11에서는 이동 시맨틱을 도입하여 자원의 소유권을 효율적으로 이전할 수 있게 되었습니다. 이는 성능을 크게 향상시키고, 불필요한 복사를 줄여줍니다. ```cpp std::vector<int> vec1 = {1, 2, 3}; std::vector<int> vec2 = std::move(vec1); // vec1의 자원을 vec2로 이동 ``` 6. 정적 어설션 (Static Assertions) `static_assert`를 사용하면 컴파일 타임에 조건을 검사할 수 있습니다. 이는 코드의 안전성을 높이고, 잘못된 사용을 사전에 방지할 수 있습니다. ```cpp static_assert(sizeof(int) == 4, "int size is not 4 bytes"); ``` 7. nullptr C++11에서는 `nullptr` 키워드를 도입하여 null 포인터를 명확하게 표현할 수 있게 되었습니다. 이는 기존의 `NULL` 매크로보다 타입 안전성을 제공합니다. ```cpp int* ptr = nullptr; // nullptr 사용 ``` 8. 스레드 지원 C++11에서는 스레드와 관련된 라이브러리를 도입하여 멀티스레딩 프로그래밍을 지원합니다. `std::thread`, `std::mutex`, `std::condition_variable` 등을 통해 스레드 안전한 프로그래밍이 가능해졌습니다. ```cpp include <thread> void threadFunction() { // 스레드에서 실행할 코드 } std::thread t(threadFunction); t.join(); // 스레드가 종료될 때까지 대기 ``` 9. 새로운 컨테이너와 알고리즘 C++11에서는 `<a href='https://sangseek.com/sangseeks/std::array/ko'>std::array</a>`, `std::unordered_map`, `std::unordered_set`와 같은 새로운 컨테이너가 추가되었습니다. 또한, 알고리즘 라이브러리도 개선되어 더 많은 기능을 지원합니다. 10. 사용자 정의 리터럴 사용자 정의 리터럴을 통해 새로운 타입의 리터럴을 정의할 수 있습니다. 이는 코드의 가독성을 높이고, 특정 타입에 대한 리터럴을 쉽게 사용할 수 있게 해줍니다. ```cpp <a href='https://sangseek.com/sangseeks/constexpr/ko'>constexpr</a> long double operator"" _km(long double x) { return x * 1000.0; } auto distance = 5.0_km; // 5000.0으로 해석됨 ``` 결론 C++11은 프로그래밍 언어의 현대화를 위한 중요한 단계로, 다양한 기능과 개선 사항을 통해 개발자들이 더 안전하고 효율적인 코드를 작성할 수 있도록 돕습니다. 이러한 변화는 C++의 사용성을 높이고, 다양한 분야에서의 활용을 촉진하는 데 기여하고 있습니다. C++11의 도입은 C++ 언어의 발전에 큰 이정표가 되었으며, 이후의 C++ 표준에서도 이러한 방향성을 이어가고 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기