암시적인 생성자의 호출입니다.
복사생성자가 =를 이용해서 암시적으로 호출되는 것처럼, 예를 들어 클래스 A의 생성자가 A::A(int)와 같은 원형을 가지고 있다면, 함수 foo(const A &a)를 호출할때 foo(1)이라고 적으면 1로부터 A를 만들수 있는 경우 자동으로 생성자가 호출됩니다. 즉 foo(A(1))이라고 적은 셈이 됩니다.
당연히 이런식으로 쓰기 위해서는 A클래스의 생성자에 대한 정보가 필요하므로 A클래스 선언이 적혀있는 해더파일을 포함해야합니다.
explicit이라는 키워드에 대해서도 알아보시면 좋을 것 같습니다.
암시적인 생성자의
암시적인 생성자의 호출입니다.
복사생성자가 =를 이용해서 암시적으로 호출되는 것처럼, 예를 들어 클래스 A의 생성자가 A::A(int)와 같은 원형을 가지고 있다면, 함수 foo(const A &a)를 호출할때 foo(1)이라고 적으면 1로부터 A를 만들수 있는 경우 자동으로 생성자가 호출됩니다. 즉 foo(A(1))이라고 적은 셈이 됩니다.
당연히 이런식으로 쓰기 위해서는 A클래스의 생성자에 대한 정보가 필요하므로 A클래스 선언이 적혀있는 해더파일을 포함해야합니다.
explicit이라는 키워드에 대해서도 알아보시면 좋을 것 같습니다.
감사합니다.
마치 10권 연달아 읽어야 하는 책중 1권이 없어 못읽고 있는 부분을 찾은듯한
그런 기분입니다.
앞에 const가 무조건 있어야 되네요
http://www.ikpil.com
레퍼런스로 넘길때만
레퍼런스로 넘길때만 const가 필요합니다. foo(1)로 넘어간 객체 a는 임시객체인 셈이므로, 임시객체에 대해서는 non-const 레퍼런스는 만들수 없기 때문입니다.
foo(const A &a)가 아니라 foo(A a)라면 const가 없어도 됩니다.
댓글 달기