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

+ Recent posts