C++ struct 멤버 변수를 전부 0으로 초기화 하려면 어떻게 해야되나요?


발생하는 문제 및 실행환경

객체 멤버 변수를 전부 0으로 초기화 해주는 더 쉬운 방법이 없을까요? 지금은

소스 코드

struct Snapshot
{
    double x; 
    int   y ;
};

int main(){
    struct Snapshot mystruct;
    mystruct.x = 0;
    mystruct.y = 0;
}

이렇게 일일이 초기화 해주고 있는데 처음 선언할 때 x,y을 바로 0으로 초기화하려면 어떡하죠?

  • 2016년 02월 02일에 작성됨

조회수 1825


1 답변


좋아요
0
싫어요
채택취소하기

구조체를 선언과 동시에 초기화하는 방법은 아주 많습니다. 여러 가지 예를 보여드릴 테니 코드에 주석을 봐주세요

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];
    }
};
  • 2016년 02월 02일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close