티스토리 뷰
면접 준비용으로 정리하는 것. 글이 다소 두서 없을 수 있음. 나편하게 읽으려고 쓰는 것임.
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 |