TestObject getObject(){
TestObject a(5.0f);
return a;
}
int main(){
TestObject a = getObject();
}
C++에서 반환 된 객체는 반환 될 때 소멸자가 호출되지 않습니다. 객체가 함수 호출에서 차지한 메모리가 소멸자를 실행하지 않고 단순히 삭제 되었습니까? 나는이 소멸자를 실행하면C++ 객체 반환
확인을 구체적인 예 ..
#include <iostream>
class Test{
public:
Test(){};
~Test(){std::cout << "Goodbye cruel world\n";}
};
Test getAnObject(){
Test a;
return a;
}
int main(){
Test a = getAnObject();
}
가 한 번만 실행 (안 getAnObject의 로컬 개체에 대한()). 이것이 항상 사실이라고 생각할 수 있습니까? 망막 정맥 폐쇄의이 테스트는 getanobject에서 두 개체의 소멸자 실행이 가이드() 및 주요 기능에 따라
#include <iostream>
class Test{
public:
Test(){};
~Test(){std::cout << "Goodbye cruel world\n";}
};
Test getAnObject(){
Test a;
Test b;
int i = 0;
if (i){
return a;
}else{
return b;
}
}
int main(){
Test a = getAnObject();
}
. 일관된 행동을 보장하기 위해 항상 3 가지 규칙을 구현해야하는 경우입니까?
getObject는 TestObject가 아닌 int를 반환하도록 프로토 타입 화됩니다. – Max
죄송합니다. 감사. – Guest300000000