인프런 커뮤니티 질문&답변
이니셜라이저 리스트
작성
·
257
1
int arr[3]={1,2,3} 이런건 이해가 갑니다.
auto i1 = {10,20,30} 이나
IntArray int_array {1,2,3,4,5} 이런건 처음보는 경우라 무슨 말인지 초장부터 이해가 안갑니다 ㅠㅠ
#include <iostream>
#include <cassert>
#include <initializer_list>
using namespace std;
class IntArray{
private:
unsigned m_length=0;
int *m_data=nullptr;
public:
IntArray(unsigned length):m_length(length){
m_data=new int[m_length];
}
IntArray(const std::initializer_list<int> &list):IntArray(list.size()){
int count=0;
for(auto &e : list){
m_data[count]=e;
++count;
}
}
};
int main(int argc, const char * argv[]) {
int arr1[5]={1,2,3,4,5};
int *arr2=new int[5]{1,2,3,4,5};
auto il={10,20,30};//initializer list
IntArray int_array{1,2,3,4,5};
cout<<int_array<<endl;
return 0;
}
답변 1
1
안녕하세요!
C++11 부터 지원하는 문법 중 하나인데 중괄호 부분을 initializer_list 객체라고 묶어 생각하시면 좀 더 수월해요
그렇게 생각했을 때, IntArray int_array {1,2,3,4,5} 는 int_array 라는 객체를 생성할건데 파라미터를 {1,2,3,4,5} 를 넘겨 만들거다라는 의미입니다. 이 {1,2,3,4,5} 가 바로 initializer_list 객체이구요!
그래서 코드를 보시면 IntArray 생성자중에 initializer_list 파라미터를 받는 생성자가 있죠.
객첸데 약간 배열같은 느낌이라고 보시면 됩니다.
이 곳 설명 정말 자세한데 한번 참고해보세요 https://modoocode.com/286





