ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Modern C++
    c++ 2025. 2. 6. 21:41
    728x90

    C++는 1983년 처음 등장한 이후 지속적으로 발전해왔습니다. 특히 C++11, C++14, C++17, C++20, C++23 등의 업데이트를 거치면서 현대적인 언어로 탈바꿈했는데요. 이를 가리켜 Modern C++이라고 합니다.

    그렇다면 Modern C++이란 무엇이며, 기존 C++과 무엇이 달라졌을까요? 그리고 개발자가 꼭 알아야 할 핵심 개념은 무엇일까요? 이번 포스팅에서 자세히 알아보겠습니다.

    1. Modern C++란?

    Modern C++은 C++11 이후의 표준을 포함한 새로운 스타일의 C++을 의미합니다. 특히 성능 최적화, 코드 안정성, 개발자 생산성을 높이기 위한 다양한 기능이 추가되었습니다.

    Modern C++의 주요 특징

    1. 더 간결하고 안전한 코드
    2. 메모리 관리 자동화 및 스마트 포인터 도입
    3. 병렬 프로그래밍(멀티스레딩) 개선
    4. 람다 표현식, auto 타입 추론, constexpr 등의 편의 기능 제공
    5. 최신 표준 라이브러리(STL) 확장

    2. 기존 C++과 무엇이 달라졌을까?

    2.1 auto 키워드 - 자동 타입 추론

    기존 C++에서는 변수를 선언할 때 반드시 타입을 명시해야 했습니다.

    std::vector<int> numbers = {1, 2, 3, 4, 5};
    std::vector<int>::iterator it = numbers.begin();

    하지만 Modern C++에서는 auto 키워드를 사용하여 타입을 자동으로 추론할 수 있습니다.

    auto numbers = {1, 2, 3, 4, 5};
    auto it = numbers.begin();

    2.2 스마트 포인터 - 메모리 누수 방지

    기존 C++에서는 new와 delete를 직접 사용해야 했습니다.

    int* ptr = new int(10);
    delete ptr;

    하지만 Modern C++에서는 스마트 포인터(unique_ptr, shared_ptr, weak_ptr)를 제공하여 자동으로 메모리를 관리합니다.

    #include <memory>
    
    std::unique_ptr<int> ptr = std::make_unique<int>(10);

    2.3 람다 표현식 - 간결한 함수 표현

    기존 C++에서는 작은 함수 하나를 만들더라도 반드시 함수를 선언해야 했습니다.

    bool compare(int a, int b) {
        return a > b;
    }
    std::sort(vec.begin(), vec.end(), compare);

    Modern C++에서는 람다 표현식을 사용하여 간단하게 표현할 수 있습니다.

    std::sort(vec.begin(), vec.end(), [](int a, int b) { return a > b; });

    2.4 constexpr - 컴파일 타임 상수

    기존 C++에서는 const를 사용했지만, const는 런타임에서 값이 결정됩니다.

    const int size = getSize(); // 실행 중 값이 결정됨

    Modern C++에서는 constexpr을 사용하면 컴파일 타임에 값이 결정됩니다.

    constexpr int square(int x) { return x * x; }
    constexpr int size = square(5); // 컴파일 시 계산됨

    2.5 멀티스레딩 - 병렬 프로그래밍 강화

    C++11 이후부터는 표준 라이브러리에 멀티스레딩 기능이 추가되었습니다.

    #include <thread>
    #include <iostream>
    
    void printMessage() {
        std::cout << "Hello, World!\n";
    }
    
    int main() {
        std::thread t(printMessage);
        t.join(); // 스레드 종료 대기
    }

    3. Modern C++에서 꼭 알아야 할 핵심 개념 정리

    기능설명추가된 버전

    auto 자동 타입 추론 C++11
    smart pointer unique_ptr, shared_ptr 등 메모리 자동 관리 C++11
    lambda 익명 함수 표현 C++11
    constexpr 컴파일 타임 상수 계산 C++11
    thread 멀티스레딩 지원 C++11
    std::optional 값이 있을 수도 있고 없을 수도 있는 타입 C++17
    std::filesystem 파일 시스템 조작 기능 C++17
    concepts 템플릿의 타입 제약 조건 설정 C++20
    coroutine 비동기 프로그래밍 지원 C++20

    4. 결론: Modern C++를 배워야 하는 이유

    1. Modern C++은 더 안전하고, 가독성이 좋으며, 성능이 우수합니다.
    2. 새로운 기능을 활용하면 코드를 짧고 효율적으로 작성할 수 있습니다.
    3. 스마트 포인터, 람다, constexpr, 멀티스레딩 등은 반드시 익혀야 할 필수 기능입니다.
    728x90
Designed by Tistory.