인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

최현욱님의 프로필 이미지
최현욱

작성한 질문수

홍정모의 따라하며 배우는 C++

c++강의 initializer_list 생성자 관련 질문

작성

·

146

1

안녕하세요 교수님.

c++ 수업 들으며 컨테이터 클래스 강의 부분에 말해주신 예제를 풀고 있는데

궁금증이 생겨 문의 드려요.

아래 코드에서 cout을 주석처리하면 마지막에 garvage값이 출력되는데 이유를 알 수 있을까해서 문의드립니다.

 

해당 cout을 주석처리 하지않으면 올바르게 생성자가 작동합니다.

IntArr(const initializer_list<int> & list) 
	{
		m_length = list.size();
		cout << "Size() : "<< list.size() << endl;
		m_data = new int(m_length);
		int a = 0;
		for (auto & ele : list) {
			//cout <<"ele : "<< ele << endl;
			m_data[a] = ele;
			a++;
		}
	}

 

답변 4

1

홍정모님의 프로필 이미지
홍정모
지식공유자

()는 생성자를 호출하고 []는 동적 배열이지요. 차이가 큽니다.

0

홍정모님의 프로필 이미지
홍정모
지식공유자

 추가 질문이 있는 것을 지금에서야 봤네요. 실행가능한 코드와 함께 새 질문으로 올려주세요.

0

최현욱님의 프로필 이미지
최현욱
질문자

바보같은 질문을 했네요 ㅎㅎ 답변 감사합니다.

그런데 의문점은 동적할당 생성자를 사용하면 왜

cout << "initializer_list : " << m_length << endl;

의 주석 할때 안할때 왜 다르게 동작하는지 궁금합니다 ㅠ

0

최현욱님의 프로필 이미지
최현욱
질문자

동적할당할때 new int()로 하는게 문제였네요..

그런데 동적할당할때 ()와 []는 다르게 동작하나요?

최현욱님의 프로필 이미지
최현욱

작성한 질문수

질문하기