본문 바로가기
C++

C++ 에서 구조체를 초기화 하는 여러가지 방법

by Warehaus 2021. 7. 29.

사실 최근 까지도 C 스타일로 구조체를 선언하고 초기화하는 방식을 선호했었는데, 다양한 방법이 있고 조금 더 깔끔한 방법이 좋을 것 같아서 알아봤다.

사실 코드를 보는 입장에서 그렇게 큰 차이를 갖는다고 생각하지는 않지만, 자기만족이라는게 있으니 익숙한 스타일을 만들어 보는 것이 좋겠다.

1. 변수선언 후 값 입력하기

C언어를 처음 배울 때 이런 방식으로 배워서 계속 초기화를 이렇게 해 왔던 것 같다. 물론 구조체 자체에 초기값을 지정할 수야 있겠지만, 사용하는 위치마다 값이 달라지고 해서.. 값을 입력하는 과정이 필요했다.

#include <iostream>
using namespace std;

struct sa
{
    int i_val;
    bool b_val;
};

int main()
{
    sa s_1;

    s_1.i_val = 1;
    s_1.b_val = false;

    cout << s_1.i_val << endl;
    cout << s_1.b_val << endl;

    return 0;
}

2. 선언과 함께 사용하기

앞으로 나는 이렇게 사용하려고한다. 사실 초기화 시점에는 이미 값들을 다 알고있는데, 변수선언 시점에 기본값을 입력하게 해놓고 다시 값을 입력하는 것 자체가 조금 불편한? 느낌을 받기 시작했기 때문이다.

#include <iostream>
using namespace std;

struct sa
{
    int i_val;
    bool b_val;
};

int main()
{
    sa s_2 = {
        1,
        true
    };

    cout << s_2.i_val << endl;
    cout << s_2.b_val << endl;

    return 0;
}

사실 두 가지 코드를 보았을 때 뭐.. 이사람은 왜 이렇게 썼지? 별로네? 라는 생각이 들지는 않는다.

그저 스타일 정도라고 판단이 되는데 나는 이런저런 이유에서 2번 방법을 사용 할 예정이다.