C++ 자동 스토리지 클래스란?
C 언어에서 auto 스토리지 클래스 지정자는 변수를 명시적으로 자동 저장(automatic storage)으로 선언할 때 사용됩니다. 자동 저장소는 블록이 실행되는 동안에만 존재하는 저장 공간을 의미하며, C 언어에서 블록 내부에 선언된 변수에는 기본적으로 auto 스토리지 클래스가 적용됩니다.
예를 들어, 어떤 블록 안에서 선언된 변수 x가 자동 저장소를 가진다면, 그 변수가 선언된 블록의 실행이 종료되는 순간 변수 x는 메모리에서 해제(삭제)됩니다. 이것이 자동 저장소의 핵심 동작 방식입니다.
auto 지정자의 적용 범위와 중복성
auto 스토리지 클래스 지정자는 오직 다음 두 경우에만 사용할 수 있습니다.
- 블록 내부에서 선언된 변수 이름
- 함수 매개변수(parameter)의 이름
그런데 흥미로운 점은, 이러한 이름들은 원래 기본값으로 이미 자동 저장소를 갖는다는 사실입니다. 따라서 데이터 선언 시 auto 지정자를 붙이는 것은 대부분의 경우 중복(redundant)이며, 실질적인 효과가 없습니다.
C++에서 auto의 의미 변화
auto 키워드는 처음 C++로 넘어올 때는 오직 문법적 호환성(syntactical compatibility)을 유지하기 위한 목적이었습니다. 즉, C 코드와의 호환을 위해 남겨진 키워드였지만, 이후 C++11 표준부터는 완전히 새로운 의미를 부여받게 되었습니다.
바로 자동 타입 추론(automatic type deduction)입니다. 현대 C++에서 auto는 초기화 식을 기반으로 컴파일러가 변수의 타입을 스스로 추론하도록 하는 강력한 기능으로 재탄생했으며, 오늘날 C++ 프로그래밍에서 가장 널리 사용되는 키워드 중 하나가 되었습니다.