답변
Foo& foo = *(new Foo);
delete &foo;
하지만 그렇게하지 마십시오. 그것은 미래의 유지 보수를 혼란스럽게 할 것이고, 그럴 이유가 없습니다. 포인터를 사용하십시오.
정확히 작동합니까? 필자의 예와'foo'를 출력하는 것이 같은 값을 반환하는 이유는 무엇입니까? –
@push_ebp - 당신의 예제는 새로운 객체의 ** 복사 **를 생성합니다. 내 코드는 복사하지 않고 새 오브젝트에 ** 참조 **를 작성합니다. 나는 당신이'Foo'에 대한 코드를 보여주지 않았기 때문에 당신의 예제에서'foo'를 출력하는 것이 무엇인지 모른다. –
간단한 'int & a = * (new int (10))'로 해답을 테스트 해 보았습니다. 그러나''a'' 결과가 인쇄 된 주소로 나오면 안됩니까? 왜 그 순간에 '10'이 인쇄됩니까? –
"실제적인 사용"이없는 많은 것들을 쓸 수 있습니다. 당신은이 문제를 확인한 것 같습니다. 특히이 표현에 관해 묻는 메시지는 무엇입니까? 어딘가에서 사용되는 것을 보았습니까? 왜 궁금해하십니까? –
'new Foo()'에 의해 생성 된 객체는 ** 즉시 ** 누설됩니다. 이것을 사용할 시간이 결코 없습니다. – StoryTeller
기술적으로'Foo'의 기본 생성자가 생성 된 객체에 대한 포인터를 어딘가에 저장하고 누출을 피할 수는 있지만 매우 특이하고 부서지기 쉽습니다. – aschepler