작성
·
95
0
AssetManager 챕터 강의 중, 다음의 두 함수를 추가하게 되는데,
FSoftObjectPath GetAssetPathByName(const FName& AssetName);
const FAssetSet& GetAssetSetByLabel(const FName& Label);
첫번째 함수인 "FSoftObjectPath GetAssetPathByName(const FName& AssetName);" 경우에는
왜 "const FAssetSet& GetAssetSetByLabel(const FName& Label);" 처럼 "FSoftObjectPath&" Return 타입이 아닌, "FSoftObjectPath" Return 타입으로 작업하셨는지 문의 드려봅니다.
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
JDY님의 질문에 답변드리자면, 프로그래밍에서 함수의 반환 타입을 결정할 때는 여러 요소를 고려해야 하며, 그 중 하나가 반환되는 객체의 수명과 관리 방법입니다.
“FSoftObjectPath GetAssetPathByName(const FName& AssetName);” 함수가 “FSoftObjectPath” 타입을 그대로 반환하는 이유는 FSoftObjectPath 객체가 값을 복사하는 데 비용이 크지 않거나, 반환된 객체가 호출 지점에서 독립적으로 사용되어야 하는 경우일 수 있습니다. 반면에 “const FAssetSet& GetAssetSetByLabel(const FName& Label);“과 같이 참조자(&)를 반환 타입으로 사용하는 경우는 해당 객체가 무거운 객체이거나 함수 외부에서 수정하지 않고 사용하기 위함일 수 있는데, 이는 해당 객체의 메모리를 효율적으로 관리하고자 하는 의도일 수 있습니다.
실질적으로 “FSoftObjectPath&“와 “FSoftObjectPath” 반환 타입 사이에서 선택하는 것은 개발자가 함수를 설계하는 과정에서, 함수가 반환하는 객체의 수명, 성능 영향, 그리고 사용하는 컨텍스트를 고려한 결정입니다. 따라서, FSoftObjectPath 객체를 값으로 반환하는 것이 해당 상황에서 더 적합하다고 판단되었을 것입니다.
제공한 정보에서는 특정한 프로그래밍 언어 구조나 방식에 대한 직접적인 설명은 없지만, 일반적인 프로그래밍 원리와 객체 지향 프로그래밍에서의 함수 설계 원칙을 통해 위와 같이 설명드릴 수 있습니다.