Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 변수를 초기화하는 방법 총정리

C++에서 변수를 초기화하는 방법은 크게 두 가지입니다. 대입 연산자(=)를 사용하는 방법과, 객체의 생성자(constructor)를 직접 호출하는 방법입니다.

1. 대입 연산자와 생성자를 이용한 초기화

기본 자료형은 대입 연산자로, 클래스나 구조체는 생성자에 인자를 전달하여 초기화할 수 있습니다.

int i = 0;
MyClass instance(1, "Hello");

C++11부터는 중괄호({})를 사용한 균일 초기화(uniform initialization)도 지원되므로, 아래와 같이 작성할 수도 있습니다.

int i{0};
MyClass instance{1, "Hello"};

2. 자동으로 초기화되는 경우

별도의 초기화 코드를 작성하지 않아도 다음과 같은 상황에서는 변수가 자동으로 초기화됩니다.

  • 클래스/구조체 인스턴스인 경우: 기본 생성자(default constructor)가 모든 기본 자료형 멤버를 초기화하도록 정의되어 있다면, MyClass instance;처럼 선언만 해도 자동으로 초기화됩니다.
  • 배열 초기화 문법을 사용하는 경우: int a[10] = {};처럼 작성하면 모든 요소가 0으로 초기화됩니다. 또한 int a[10] = {1, 2};처럼 일부만 지정하면 나머지 요소는 모두 0으로 채워집니다. 즉, a[0] == 1, a[1] == 2이고 a[2]부터 a[9]까지는 0이 됩니다.
  • 전역(global) 또는 extern 변수인 경우: 프로그램 시작 시 정적 초기화(static initialization) 과정을 거쳐 자동으로 0으로 초기화됩니다.
  • static으로 선언된 변수인 경우: 지역 변수라도 static 키워드가 붙으면 프로그램 수명 동안 유지되며 자동으로 0으로 초기화됩니다.

3. 주의사항

반면, 함수 내부에 선언된 일반 지역 변수는 자동으로 초기화되지 않습니다. 초기화하지 않은 지역 변수에는 쓰레기 값(garbage value)이 들어 있어 예기치 않은 동작의 원인이 될 수 있으므로, 반드시 명시적으로 초기화하는 습관을 들이는 것이 좋습니다.