[C++] 함수
함수를 정의하는 일반적인 형식
ReturnType functionName(fParameterList) //머리부(header)
{ //몸체 블록
Type1 localVar1; //지역변수 선언
type2 localVar2;
....
statement1; //처리할 작업을 수행하는 문장
statement2;
....
return returnExpression; //결괏값을 반환함
}
- 값을 반환할 필요가 없을 때는 void형 사용
- fParameterList는 형식 매개변수
함수를 호출할 때에는 함수의 이름과 함께 필요한 인수를 전달한다.
1. functionName(aParameterList); //void형 함수나 반환된 값을 사용할 필요가 없을 때
2. varName = functionName(aParameterList); //반환된 값을 사용하는 문장의 예
- aParameterList는 실매개변수
함수의 원형
호출하는 명령이 ㅎ마수를 정의하는 문장들의 앞에 위치하게 되면 오류가 발생한다.
이러한 경우에는 함수를 완전히 정의하는 대신 함수의 원형(prototype)을 프로그램의 앞부분에 선언한다.
ReturnType functionName(fParameterList); //함수 원형 선언
C++ 언어에서는 C 언어에서 사용했던 것처럼 매개변수 리스트를 생략하는 것은 허용되지 않는다.
함수의 장점
- 의미 있는 작업 단위로 모듈화하여 프로그램을 분할 작성함으로써, 간결하고 이해하기 쉬운 프로그램을 만들 수 있다.
- 여러 곳에서 반복 사용되는 기능을 함수로 정의하면 동일 코드를 중복 작성하지 않아도 된다.
- 잘 설계하여 만든 함수는 그 기능이 필요한 여러 가지 다른 응용에서 재사용하기 좋다.
인수의 전달
값 호출
값 호출은 실 매개변수의 값을 형식 매개변수에 복사하여 주는 방식이다.
함수 내에서 형식 매개변수의 값을 변경하더라도 실 매개변수의 값은 영향을 받지 않는다.
참조 호출
값 호출과는 달리 참조 호출은 실 매개변수의 참조, 즉 주소를 전달한다. 이에 따라 형식 매개변수는 전달되는 실 매개변수의 별명처럼 사용된다. C 언어에서는 참조 호출 방식을 제공하지 않기 때문에, 참조 호출이 필요할 때는 포인터를 전달하는 방법을 사용하였다. 그러나 C++ 언어에서는 참조형을 사용할 수 있다.
void SwapValues(int &x, int &y); //원형
//두 변수의 값을 바꾸는 함수
//인수 int &x, int &y : 값을 바꿀 변수
//반환 : 없음
void SwapValues(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
SwapValues()를 호출할 때 매개변수 x와 y는 실 매개변수의 참조를 전달 받아, x와 y를 사용하는 것은 해당되는 실 매개변수를 직접 사용하는 것과 같은 동작을 하게 된다.
실 매개변수의 값을 보호하고 싶을 때는 해당 형식의 매개변수를 const로 지정하면 된다.
함수의 다중정의
다중정의(overloading)란 동일한 이름에 대하여 여러 가지 의미를 부여하는 것이다.
inline 함수
inline 함수는 함수가 가지는 모듈화의 장점을 살리면서 이러한 불필요한 실행 효율 저하를 막기 위해 사용할 수 있다.
출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020