공학/C++

C++의 개선된 함수 기능

둥둥잇 2014. 12. 1. 15:02



* 인라인 함수

 함수 호출 시 발생하는 오버헤드를 줄이기 위해

 함수를 호출하는 대신 함수가 호출되는 곳마다 함수의 코드를 복사하는 방법


inline 리턴형 함수명(인자 리스트)

{

}


컴파일러에 의해 코드 대치



인라인 함수를 사용하면

- 프로그램의 실행 속도를 빨라지지만

- 프로그램의 크기는 커짐


- 재귀 함수에 사용 불가능

- 인라인 함수의 정의는 헤더 파일에 포함되어야 함



cf. 매크로 함수

함수 호출 시 발생하는 오버헤드 없이 하출가 호출되는 곳마다 햄수의 내용을 복사해서 넣어줌

#define을 사용하기 때문에 컴파일 전 선행 처리기에 의해 처리

선행 처리기가 소스 파일 내 특정 문자열을 찾아 다른 문자열로 대치하는 기능 제공

- 인자의 형 검사 하지 않음




* 디폴트 인자

함수를 호출할 때 인자를 생략하면 디폴트 값이 자동으로 사용되도록 하는 방법

함수 선언 시, 지정




* 함수 오버로딩

함수의 이름은 같지만 인자의 개수나 데이터형이 다른 함수를 여러번 정의




* 함수 템플릿

함수나 클래스를 정의할 때 특정 데이터형을 사용하는 대신

여러 가지 데이터형이 될 수 있는 범용형 사용

범용형으로 정의된 함수나 클래스를 함수 템플릿 또는 클래스 템플릿


- 직접 함수나 클래스를 정의하는 대신 컴파일러에게 함수나 클래스를 정의하는 방법을 알려줌

- 처리할 데이터의 데이터형은 다양하지만, 처리 알고리즘은 같은 함수를 만들 때 유용


template <typename T> T Function (T a, T b)

{

return a > b ? a : b;

}






출처 : C++ Programming with a WorkBook (이한출판사)