개발공부/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값으로 자동초기화되어 에러가 뜨지 않는다.
그러므로 더욱 더 초기화의 습관을 잘 들여야한다.