본문 바로가기

초기화

char 배열 초기화 방법 char 배열뿐만 아니라 일반 배열도 마찬가지일 것 같다. 보통 char name[128]; 로 선언하고 초기화 할때 다음과 같은 방법을 사용한다. 1. name[0] = {0,}; 2. memset(name, 0, sizeof(char) * 128); 아마 코딩의 간편함의 이유로 1번을 많이 사용할 것 같은데, 사실 내부적으로 원리는 같다. 어셈블리 코드를 보면 내부적으로 memset을 호출하고 있다. VS2015 를 사용했으며, 컴파일러마다 차이는 있을 것 같다. 그렇다면, 1번방법에서 컴마(,) 를 안찍으면 어떻게 될까? name[0] = {0}; 똑같이 배열이 0으로 초기화가 된다. 어셈코드도 동일하다. 이것또한 컴파일러마다 차이가 있겠지만 아직까지는 관용상 1번 방법을 많이 사용하는듯 하다. 더보기
C++11 클래스멤버변수를 선언과 동시에 초기화 C++11 이 도입되면서 정말 편하게 느껴졌던 기능중 하나는 바로 이거다. class A { public: int a = 7; }; 멤버변수를 선언과 동시에 초기화가 가능해졌다는 것이다. C++98 에서 정적상수 변수만 가능했던 문법이 이렇게 바뀌게 되었다. 이는 런타임 생성자 호출때 이 초기화 수식을 이용할 수 있게 된다 그렇다면 선언과 동시에 초기화를 하면서 생성자에서도 초기화를 한다면? class A { public:A(): a(77) { }}; 생성자의 초기화가 우선 적용된다. 참고사이트 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2628.html 더보기