개발/c++
[c++] 인라인 함수의 효용
물만난동그리
2023. 9. 4. 14:23
728x90
1. 인라인 함수의 사용
#include <iostream>
// 인라인 함수 정의 // 앞에 inline이 추가됨
inline int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3); // 인라인 함수 호출
return 0;
}
2. 인라인 함수를 사용하지 않은 경우
#include <iostream>
// 일반적인 함수 정의
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 3); // 함수 호출
return 0;
}
두 예시의 가장 중요한 차이점은: 함수 호출 방식 (inline 키워드)
- inline O : 함수 호출 대신 함수 내용이 호출 지점에 직접 삽입됨
→ 함수 호출 오버헤드가 사라지고 코드 실행 속도가 향상됨
→ 따라서, 인라인 함수는 그 함수 호출이 아주 많은 경우 성능 향상에 유용함!
→ 단 코드 삽입이기 때문에 재귀가 불가능!
↔️ inline X : 함수 호출이 발생하며, 함수 호출 및 복귀 주소 저장을 위한 스택 프레임이 생성됨
→ 작은 함수에서도 오버헤드 발생 (여러 번 호출될 시 성능 저하 가능)
**
어떤 함수가 특정 구조체에 의존적일 때, 해당 함수를 구조체 내부에서 상속하여 정의할 수 있음.
단, 구조체 코드에 대한 가독성을 높이기 위해서, 상속을 유지하되 구조체 정의 코드 밖으로 빼낼 수 있음.
이때 inline과 :: 코드를 활용함.
struct Car
{ int curSpeed;
void Accel(); //함수 원형을 구조체 내부에 상속시켜 정의하되
}
inline void Car::Accel() //구조체 코드 바깥으로 함수 정의를 빼냄 //이때 inline & :: 를 사용
{
//~~~~ }
728x90