Programing/C++

[C++ 프로그래밍] auto 키워드

유니얼 2024. 6. 21. 02:29
728x90

C++ 기초 프로그래밍: auto 키워드

C++11에서 도입된 auto 키워드는 변수의 타입을 자동으로 추론해주는 기능을 제공합니다. 이는 코드의 가독성을 높이고, 특히 복잡한 타입을 다룰 때 코드 작성을 간편하게 해줍니다. 이번 블로그 글에서는 C++의 auto 키워드에 대해 알아보고, 이를 활용하는 방법과 그 장점을 소개하겠습니다.

auto 키워드의 사용

auto 키워드는 변수 선언 시 변수의 타입을 컴파일러가 자동으로 결정하도록 합니다. 예를 들어, 변수에 초기값을 할당할 때 auto를 사용하면, 컴파일러는 그 초기값을 기반으로 변수의 타입을 추론합니다.

auto 키워드의 장점

  1. 코드 간결성: 복잡한 타입을 명시적으로 선언하는 대신, auto를 사용하면 코드가 간결해집니다. 이는 특히 반복자(iterator)나 람다 표현식과 같이 타입이 복잡한 경우 유용합니다. std::vector<int>::iterator it = vec.begin(); // 복잡한 타입 선언 auto it = vec.begin(); // 간결한 타입 선언
  2. 유지보수성 향상: 변수의 타입이 변경될 경우, 해당 변수를 사용하는 코드에서 타입을 일일이 수정할 필요 없이 auto 키워드를 사용하면 됩니다. auto var = getComplexType(); // getComplexType 함수의 반환 타입이 변경되더라도 수정 필요 없음
  3. 템플릿 사용 시 편리함: 템플릿 함수나 클래스의 반환 타입을 정확히 알기 어려울 때 auto를 사용하면 유용합니다. template<typename T1, typename T2> auto add(T1 a, T2 b) -> decltype(a + b) { return a + b; }

주의사항

  • auto 키워드를 사용할 때는 반드시 초기값을 지정해야 합니다. 초기값 없이 auto를 사용하면 컴파일 오류가 발생합니다. auto var; // 오류: 초기값이 없으므로 타입을 추론할 수 없음
  • auto는 변수의 타입을 자동으로 추론하지만, 코드의 의도를 명확히 하는 것이 중요합니다. 과도한 auto 사용은 오히려 코드의 가독성을 해칠 수 있습니다.

예제 코드

#include <iostream>

int main()
{
    auto var1{12};      // int
    auto var2{13.0};    // double
    auto var3{14.0f};   // float
    auto var4{15.0l};   // long double
    auto var5{'e'};     // char

    auto var6{123u};    // unsigned int
    auto var7{123ul};   // unsigned long
    auto var8{123ll};   // long long

    std::cout << "var1 occupies : " << sizeof(var1) << " bytes" << std::endl;
    std::cout << "var2 occupies : " << sizeof(var2) << " bytes" << std::endl;
    std::cout << "var3 occupies : " << sizeof(var3) << " bytes" << std::endl;
    std::cout << "var4 occupies : " << sizeof(var4) << " bytes" << std::endl;
    std::cout << "var5 occupies : " << sizeof(var5) << " bytes" << std::endl;
    std::cout << "var6 occupies : " << sizeof(var6) << " bytes" << std::endl;
    std::cout << "var7 occupies : " << sizeof(var7) << " bytes" << std::endl;
    std::cout << "var8 occupies : " << sizeof(var8) << " bytes" << std::endl;

    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

var1 occupies : 4 bytes
var2 occupies : 8 bytes
var3 occupies : 4 bytes
var4 occupies : 16 bytes
var5 occupies : 1 bytes
var6 occupies : 4 bytes
var7 occupies : 8 bytes
var8 occupies : 8 bytes

결론

C++의 auto 키워드는 타입을 자동으로 추론하여 변수 선언을 간편하게 해줍니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있으며, 특히 복잡한 타입을 다룰 때 매우 유용합니다. 하지만 auto 키워드를 사용할 때는 초기값을 명시해야 하며, 코드의 의도를 명확히 하기 위해 적절하게 사용하는 것이 중요합니다.

반응형