에서 나는 다음과 같은 코드에 대한 질문이 있습니다.복사 생성자와 연산자 = C++
나는이 다음 코드 :
P doSomething(){
P p("myValue");
return p;
}
int main(){
P m=doSomething();
return 1;
}
- 왜 생성자가
doSomething()
함수의return p
에서 호출 복사되지 않는 이유는 무엇입니까? P m=doSomething()
- 복사 생성자 또는 연산자 =?를 호출하는 것으로 가정합니까? 메리
는P new_val=("newVal"); p m=new_val;
은 (내가 여기 알고 전화는 복사 생성자)
감사합니다, : 경우에
IT는이 코드의 차이는 다음과 같은 어떤 연산자 =,이다
가능한 중복 호출됩니다 복사 반환 [왜 소멸자 한 번만 호출 된?] (http://stackoverflow.com/questions/ 6422114/왜 소멸자인가?) –
'class P '에 정의 된 복사 생성자에 대한 코드를 게시 할 수 있습니까? – cpx
변수의 초기화시,'='을 쓰고 있더라도 항상 복사 생성자가 사용됩니다. 귀하의 예제에서 사용되지 않는 이유는 컴파일러가 코드를 최적화했기 때문일 수 있습니다. – Shahbaz