Gidhub BE Developer

C++ Struct 선언 및 초기화

2018-09-23
goodGid

To Do

  • Struct 구조의 선언 및 초기화에 대해 알아보자.
#include <iostream>
using namespace std;

struct A{
    int a,b,c;
    A(int _a, int _b, int _c) : a(_a), b(_b), c(_c){};
};

struct B{
    int a,b,c;
};

int main() {
    // [1]
    // Error : No matching constructor for initialization of 'A'
    // A tmp;
    
    // [2]
    A tmp(1,2,3);
    
    // [3]
    B tmp2;
    tmp2.a = 1;
    tmp2.b = 2;
    tmp2.c = 3;
    
    cout << tmp.a << " " << tmp2.a << endl;
    cout << tmp.b << " " << tmp2.b << endl;
    cout << tmp.c << " " << tmp2.c << endl;
    
    return 0;
}

/*
Output
1 1
2 2
3 3
*/

Review

  • [1]처럼 했을 시 생성자 에러가 뜬다.

  • struct A 구조체안에서 A()로 선언한 생성자가 없기 때문이다.

  • A구조체를 사용하고 싶다면 [2]처럼 해야한다.

  • B구조체처럼 생성자가 없이 선언 후 [3]처럼 하나씩 초기화를 해줘도 된다.


Index