티스토리 뷰

언어

C++ 초기화

jazzmaster 2019. 6. 6. 22:36

면접 준비용으로 정리하는 것. 글이 다소 두서 없을 수 있음. 나편하게 읽으려고 쓰는 것임.

 

 

 

1. 구조체와 클래스의 통일성 있는 초기화 방법

: ex) struct Ronaldo 라는 구조체와 class Messi 라는 클래스가 있다고 가정

: 초기화는 Ronaldo = {1,2,3};       Messi = {1,2,3}; 이런식으로 동일하게 이용할 수 있다.

: 구조체나 클래스 외에도 변수도 저런식으로 초기화가 가능하다.(굳이 쓸일은 없을거 같다만..)

: 0으로 초기화할 경우    {} <-- 이런 방식으로 초기화가 생략 가능하다.

: 이러한 걸 유니폼 초기화라고 부른다.

 

 

1.1 유니폼 초기화의 장점은?

: 축소 변환을 방지 하는 기능을 가지고 있음

: 뭐 가령 변수 int a = 3.123이라는 코드가 있으면 c++은 3으로 축소를 하는데,

  유니폼 초기화는 경고 혹은 에러메세지를 미리 출력해준다. 사전에 이러한 비효율적인 코드를 잡아준다는 소리

: std 컨테이너들 초기화할 때도 이용 된다. 매우 직관적이고 코드가 간결해짐.

: 동적으로 할당되는 배열에도 사용 가능

  ex) int* inventory = new int[3]{4,5,2};   --> 뭐 이런식으로 말이다.

: 클래스 내에서 생성자 초기화 리스트에서도 멤버 변수인 배열을 초기화 할 때 사용할 수도 있음.

 

 

 

 

 

1.2 초기화 리스트 <initializer_list>

: initializer_list 헤더에 정의

: 파라미터 개수가 가변적일 때 사용하면 좋음

: 한가지 타입만 가능(int형 double형 char형 등등을 같이 섞어서 못받는 다는 소리)

: ex)

   int AddNumber(initializer_list<int> val)

   {

        int totalCnt {0};

        for(const auto& item: val)

        {

            total += item;

        }

        return total;

    }

 

이렇게 정의가 되어 있는데 AddNumber를 호출하려면

int형만 집어 넣어야 한다. --> auto ret = AddNumber({1,2,3,4}) 뭐 이런식으로.

 

 

 

 

 

*개인적인 생각으로는 초기화 방식을 이걸로 통일하는게 좋은거 같다.

'언어' 카테고리의 다른 글

C++ 타입 그리고 캐스팅 방법  (0) 2019.06.06
C++ 아주 헷갈리는 const 키워드  (0) 2019.06.06
C++ 이동 시맨틱  (0) 2019.06.06
C++ 참조 정리  (0) 2019.06.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함