C++ 반환값 (return)
1. 개요
1.1 문서 개요
이 문서는 C++에서 함수의 반환값(return value)과 관련된 문법, 반환 방식, 반환값의 생명주기 및 최적화 기법 등에 대해 설명합니다. 반환값은 함수의 실행 결과를 외부에 전달하는 메커니즘으로, 함수 설계에서 핵심적인 요소입니다.
2. 내용
2.1 반환값의 문법
2.1.1 기본 구조
int add(int a, int b) {
return a + b;
}
함수는 반환형을 명시하며, return
키워드를 통해 값을 반환합니다.
2.2 반환값의 전달 방식
2.2.1 값에 의한 반환
기본적으로 반환값은 복사되어 전달됩니다. 구조체나 객체 반환 시 비용이 발생할 수 있습니다.
std::string getName() {
std::string name = "C++";
return name; // 복사 발생 가능
}
2.2.2 참조 반환
함수 내부의 객체를 참조로 반환할 수 있으며, 수명에 주의해야 합니다.
int& getRef(int& x) {
return x;
}
2.2.3 포인터 반환
동적으로 할당된 메모리를 반환할 경우 포인터 사용이 일반적입니다.
int* createArray(int size) {
return new int[size];
}
2.3 반환 최적화: RVO와 NRVO
2.3.1 Return Value Optimization
컴파일러는 불필요한 복사를 제거하는 최적화를 자동 수행합니다.
MyClass create() {
MyClass obj;
return obj; // RVO 적용 가능
}
3. 마무리
C++에서 함수 반환값은 기본 자료형부터 사용자 정의형까지 다양한 형태로 사용되며, 반환 방식과 수명 관리에 따라 프로그램의 성능과 안정성에 영향을 줍니다. 복사, 참조, 포인터 반환과 같은 기법은 반환 목적과 객체 수명에 따라 적절히 선택되어야 합니다.