Anonymous Struct

2020. 11. 30. 19:36카테고리 없음

Anonymous Struct

 

 

사용예시

#include <iostream>
int main(){

    struct Point{
        int x;
        int y;
    };

    Point ary[] = {Point{1,2}, Point{2,4}};
    //혹은 다음과 같이 선언되기도 한다.
    Point ary2[] = {{1,2},{2,4}};
}

 

 

봐둘 것

1. struct가 main함수 내부에 선언 되었다.

2. Anonymous Struct를 사용하였다.

2-1 Anonymous Struct의 초기화는 { } bracket을 사용하였다.

2-2 Anonymous Struct는 변수명을 필요로 하지 않는다.


 

 

응용

1. class도 main함수 내부에 선언 되는가?

#include <iostream>
int main(){

    class Point{
        int x;
        int y;
    };

    Point ary[] = {Point{1,2}, Point{2,4}}; // constructor가 없다는 에러
    //혹은 다음과 같이 선언되기도 한다.
    Point ary2[] = {{1,2},{2,4}};
}

Ans) 선언된다. 그러나 Struct와 같이 { } bracket으로 private 필드를 묵시적으로 생성할 수 없다.

 

 

 

2. Anonymous Class를 위와같이 사용 가능한가?

Ans) 사용가능하지만 생성자를 따로 정의하고, ( ) bracket을 사용해야 한다.

따라서 다음과 같이 생성자를 따로 정의하고,

{ } bracket이 아닌 ( ) bracket을 이용해 Struct와 같이 사용할 수 있다.

#include <iostream>
int main(){

    class Point{
        int x;
        int y;
    public:
        Point(int _x, int _y):x(_x),y(_y){}
    };

    Point ary[] = {Point(1,2), Point(2,4)};
}