개발공부/C++

assignment와 initialization

dyson_ok 2019. 10. 21. 10:06
#include <iostream>

int main()
{
	int x = 123; //initialization
    
	x = 4; // assignment
    
	std::cout << x << std::endl;
    
	return 0;
}

initialization과 assignment는 대입연산을 하기 때문에 내부적으로 같은 역할을 수행한다고 생각할 수 있지만 

그렇지 않다. 초기화의 경우 변수 x가 메모리에 올라갈 시점(할당)부터 바로 123(literal)이 복사 되어 들어 가지만

assigment는 쓰레기값이 들어있는 상태에서 대입하게 된다.

int x(123); 와 같이 쓸 수도 있다.

 

그리고 초기화는 debug모드에서는 런타임에러가 뜨지만 release모드에선 0값으로 자동초기화되어 에러가 뜨지 않는다. 

그러므로 더욱 더 초기화의 습관을 잘 들여야한다.