-4
class A{
/.../
};
class B{
public:
A& foo()
{
A *bar = new A;
return *bar;
}
};
int main()
{
A varA;
B varB;
varA = varB.foo();
return 0;
}
이 줄을 실행하면 어떻게됩니까 varA = varB.foo()
? foo에서 생성 된 객체에 대한 소멸자 (복사/이동 할당 연산자 호출 후)가 호출 되나요?메서드에서 변수로 반환 된 참조 할당
_ "이 줄이 실행되면 어떻게 될까? varA = varB.foo()'"_ 메모리 누수 – user0042
'foo()'는 힙에있는 객체에 대한 참조를 반환합니다. 'varA'는 그 객체로부터 복사 할당되고, 그 다음 유출됩니다. –
아니요,'new'로 생성 된 객체의 소멸자는 호출되지 않습니다. http://en.cppreference.com/w/cpp/language/new로 이동하여 주제에 대해 더 자세히 배우기위한 출발점으로 사용하십시오. –