본문 바로가기

Language/C

구조체 정의와 동시에 초기화

일반적으로 구조체는 멤버함수를 가지지 않기 때문에 생성자라는 개념이 없다. 실제 책을 찾아봐도 이러한 내용은 다루지 않더라. 


그러나 생성자가 존재는 하더만 ?! 


일단 깊게 파진 못하고 잊어버릴까 싶어 우선 포스팅 바로 ....


typedef struct TESTSTR{

int a;

int b;

}TESTSTR;


보통 위와 같이 사용하여 선언시 다음과 같이 초기화 한다. 


TESTSTR teststr = {10,11};


이것도 머 나쁘진 않지만 멤버변수가 많다면 이짓도 여간 힘든일이 아니다. 


그리고 할때마다 memset 또는 ZeroMemory 함수를 쓰는거도 귀찬고 잊어버려 쓰레기 값이 들어가는 경우가 허다하다.


그래서 생성자 같은 함수가 있으면 편리한 것!! 젠장...있었구나...


선언시 다음과 같이 해주면 된다. 

typedef struct TESTSTR{

int a;

int b;


TESTSTR()

{

a = 0;

b = 0;

}

}TESTSTR;


생긴게 정말 생성자와 동일하다 아니 어쩌면 찾아보면 구조체 생성자라고 나올지도.(아직 조사를 해보질 않아서...)