이것은 내가 생각하는 것입니다 :반환되는 값 반환 유형은 객체의 참조입니까?
함수가 반환하면 객체의 새로운 임시 복사본을 만들고이 임시 객체는 호출 된 곳의 명령문의 시간 동안 메모리에 남아 있습니다.
함수가 참조를 반환 할 때 개체 자체가 반환됩니다. 이는 해당 객체가 로컬이 아니어야 함을 의미합니다. 내가
MyStruct d("notmyname"),g("myname");
d = ReferenceReturn(g);
cout << d.name;
cout << ReferenceReturn(g).name;
그것은 모두에서 쓰레기를 인쇄
을() 주에MyStruct & ReferenceReturn(MyStruct cl)
{
return cl;
}
:
그래서 나는이 작업을 수행 할 때.
무엇이 반환됩니까? : 함수가 끝나자 마자 파손되는 g의 로컬 복사본 또는 명령문이 끝난 후 파기되는 임시 객체에 대한 참조를 참조합니다. 그러나 만일 임시 직원이 만들어지면 올바른 방법으로 d를 덮어 쓸 것입니다. 그래서 그것은 전달 된 값의 반환 된 localcopy 참조를 믿습니다.
하지만 구조체에서 소멸자를 만들 자마자 다음 코드와 특정 출력으로 완벽하게 처리됩니다.
는~MyStruct()
{
cout << name << " is destroying";
}
출력 :
myname is destroying
myname
myname
myname is destroying
....
이 출력은 하나의 목적은 각각의 호출에 대해 생성되는 것을 나타낸다. (두 번의 호출이 있습니다)
그러나 왜 소멸자 없이는 작동하지 않습니까?
감사
그런 경우 결과가 정의되지 않습니까? –