06
30

인라인 함수는 호출될 때 일반적인 함수의 호출 과정을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 함수입니다.

이 방식은 함수를 호출하는 데 걸리는 시간은 절약되나, 호출 과정으로 생기는 이점을 포기하게 되어 코드가 매우 적은 함수만을 인라인 함수로 선언해서 사용하는 것이 좋다.

 

예시)

#include <iostream>
using namespace std;

inline int SQUARE(int x)
{
	return x * x;
}

int main(void)
{
	cout << SQUARE(5) << endl;
	cout << SQUARE(12) << endl;
	return 0;
}

위와 같은 인라인 함수를 사용하게 되면, 자료형을 지정하여 데이터 소실이 생길 수 있다는 문제가 생긴다. 함수의 오버로딩을 사용하면 이런 문제점을 해결 할 수 있지만 그렇게 된다면 여러 개의 함수를 추가로 정의해야 되어 한번만 정의하면 되는 매크로 함수의 장점에서 멀어진다.

 

예시)

inline int SQUARE(int x) {return x;}

cout<<SQUARE(3.15); // 0.15가 소실되어 3x3의 결과인 9가 출력된다

C++의 템플릿을 이용하면 매크로 함수와 마찬가지로 자료형에 의존적이지 않는 함수가 완성된다. 간단한 예시)

#include <iostream>
using namespace std;

template <typename T>
inline T SQUARE(T x)
{
	return x * x;
}

int main(void)
{
	cout << SQUARE(5.5) << endl;
	cout << SQUARE(12) << endl;
	return 0;
}

'코딩 > C++' 카테고리의 다른 글

05. 자료형 bool  (1) 2022.07.12
04. 이름공간(namespace)  (1) 2022.07.08
02. 매개변수의 디폴트 값  (3) 2022.06.22
01. 함수 오버로딩  (0) 2022.06.15
00. C++ 입출력  (0) 2022.06.15
COMMENT