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

조준수님의 프로필 이미지

작성한 질문수

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

8.3 생성자 Constructors

초기화 질문

21.11.24 11:21 작성

·

183

0

강의 중간에 인스턴스 초기화를할때

Date date { 2021, 11, 24 };

Date date ( 2021, 11, 24 );

그리고

Date date = Date { 2021, 11, 24 };

이렇게 있는데

Date date = { 2021, 11, 24 };

이렇게도 초기화가 되는데...

무슨차이인가요?

 

그리고 번외 질문인데,

C 같은 경우 함수의 매개변수로 구조체를 받을때

그 함수 내에서 받은 구조체의 값을 변경하고자 하면

구조체의 주소값을 받아야 했잖아요.

C++ 같은경우 레퍼런스의 추가로인하여

구조체의 포인터를 사용할 일 없이 레퍼런스만을 이용하여

값을 변경이 가능한데,

이러면 구조체의 포인터는 사용할 일이 없는건가요??

그냥 궁금해서 물어봅니다....

답변 1

0

이준우님의 프로필 이미지

2021. 11. 24. 14:37

Date date { 2021, 11, 24 };

Date date ( 2021, 11, 24 );

이 둘의 차이는 여러가지의 자료형을 넣을 수 있냐 없냐 차이 같습니다.

uniform initialization 같은 경우에는, {int, int, int} or {float, float, float}식으로만 가능하고요.

direct initialization 같은 경우에는 여러개의 자료형을 혼합하여 사용가능한 것으로 알고 있어요.

(int, float, char) or (int, float, int) etc.. 

-----------------------------------------------------------------------------------------------------------

두번째 질문 같은 경우에는, 동일한 작동을 하는데요. 차이가 없다고 생각합니다. class 내부 변수 선언을 public으로 했을 경우에 

Date date = Date { 2021, 11, 24 };  같은 경우에는 date 인스턴스에 Date class의 public 변수를 {} 값으로 초기화를 하라는 뜻이니깐요.

Date date = { 2021, 11, 24 };  그렇기 때문에 이도 동일하게 동작합니다.