[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;
}
위 코드에서 x
는 main
함수 전체에서 접근 가능하지만 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
클래스의 객체 t
와 u
의 수명을 확인할 수 있습니다. 생성자와 소멸자의 호출을 통해 객체의 수명이 시작되고 종료되는 것을 확인할 수 있습니다.
이상으로 C++의 유효범위와 수명에 대해 간단히 알아보았습니다.
더 자세한 내용은 관련 문서를 참고해주시기 바랍니다.