2012-09-17 5 views
0

실제로이 관용구를 정의하는 방법을 모르겠습니다. 내가 예상생성자의 바로 가기

ClassWithAMessage c = "This is the message"; 

읽을 : 일부 코드에서

내가 좋아하는 빨간색 무언가가 누군가가 몇 가지 정보를 제공 할 수

ClassWithAMessage c("This is the message"); 

나는이 문제를 재현하는 방법을 모르는 또는 장난감 예?

+1

참조 http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-direct-initializati – hmjd

답변

5
ClassWithAMessage c = "This is the message"; 

복사 초기화입니다. 이 작업을 수행하려면 복사 생성자를 사용할 수 있어야합니다. 먼저 "This is the message"의 변환 생성자를 사용하여 임시 ClassWithAMessage이 생성됩니다. 임시는 복사 생성자와 함께 사용되어 c을 구성합니다. 이것은 elion을 복사해야합니다 (임시 직원이 없을 수도 있습니다).

ClassWithAMessage c("This is the message"); 

직접 초기화입니다. 변환 생성자는 직접 사용됩니다.

실제로 관용구가 아니라 단지 개체를 구성하는 다른 방법입니다.

+2

C++ 11에서는 이동 생성자가 사용 가능한 경우 첫 번째 명령문의 복사 생성자 대신 사용됩니다. – xception