C++ struct 멤버 변수를 전부 0으로 초기화 하려면 어떻게 해야되나요?
조회수 21721회
발생하는 문제 및 실행환경
객체 멤버 변수를 전부 0으로 초기화 해주는 더 쉬운 방법이 없을까요? 지금은
소스 코드
struct Snapshot
{
double x;
int y ;
};
int main(){
struct Snapshot mystruct;
mystruct.x = 0;
mystruct.y = 0;
}
이렇게 일일이 초기화 해주고 있는데 처음 선언할 때 x,y을 바로 0으로 초기화하려면 어떡하죠?
1 답변
-
구조체를 선언과 동시에 초기화하는 방법은 아주 많습니다. 여러 가지 예를 보여드릴 테니 코드에 주석을 봐주세요
Snapshot s; // 초기화 없이 선언 Snapshot s = {}; // 모든 멤버를 초기화 - 전부 0으로 설정됨
멤버가 int나 long같은 기본 타입이 아니라 구조체가 오더라도 초기화하는 방식은 같습니다.
struct Parent { Snapshot s; }; //Snapshot을 멤버로 가짐 Parent p; // 초기화 없이 선언 Parent p = {}; // 모든 멤버를 초기화 - {x,y}가 전부 0으로 설정됨
0이나 그 외에 값으로 초기화하고 싶은 경우, 아니면 멤버로 동적 할당할 배열이 있는 경우는 생성자를 만들어 생성과 동시에 초기화할 수 있습니다.
struct Snapshot { int x; double y; int *myarr; Snapshot():x(0),y(0) //x, y에 0을 초기화하는 생성자 { myarr = new int[30]; } };
댓글 입력