[c++] 유효범위와 수명

이번에는 C++에서 유효범위(scope)와 수명(lifetime)에 대해 알아보겠습니다. 이 두 가지 개념은 변수와 객체의 생애주기를 이해하는 데 중요합니다.

유효범위 (Scope)

유효범위는 프로그램에서 변수나 함수가 접근 가능한 범위를 나타냅니다.

#include <iostream>

int main() 
{
    int x = 5;  // 'x' 변수의 유효범위는 main 함수 내부
    std::cout << x << std::endl;
    
    {
        int y = 10;  // 'y' 변수의 유효범위는 이 중괄호 내부
        std::cout << y << std::endl;
    }

    // std::cout << y << std::endl;  // 'y'는 이 지점에서 유효하지 않음

    return 0;
}

위 코드에서 xmain 함수 전체에서 접근 가능하지만 y는 중괄호 내부에서만 접근 가능합니다. 중괄호를 벗어나면 y의 유효범위가 종료됩니다.

수명 (Lifetime)

수명은 객체가 메모리상에서 존재하는 기간을 나타냅니다.

#include <iostream>

class Test 
{
public:
    Test() { std::cout << "Constructor called" << std::endl; }
    ~Test() { std::cout << "Destructor called" << std::endl; }
};

int main() 
{
    std::cout << "Creating Test object" << std::endl;
    Test t;  // Test 객체가 생성되고, 수명이 시작됨

    {
        std::cout << "Entering inner scope" << std::endl;
        Test u;  // 새로운 Test 객체가 생성되고, 수명이 시작됨
        std::cout << "Leaving inner scope" << std::endl;
    }

    std::cout << "Exiting main function" << std::endl;
}

위 코드에서 Test 클래스의 객체 tu의 수명을 확인할 수 있습니다. 생성자와 소멸자의 호출을 통해 객체의 수명이 시작되고 종료되는 것을 확인할 수 있습니다.

이상으로 C++의 유효범위와 수명에 대해 간단히 알아보았습니다.

더 자세한 내용은 관련 문서를 참고해주시기 바랍니다.