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
'개발 > c++' 카테고리의 다른 글
[c++] 문자열과 포인터 (0) | 2023.09.05 |
---|---|
[c++] 클래스 디자인하기 (feat. 멤버변수 / 멤버함수 / private & public / inline) (0) | 2023.09.04 |
[c++] Call by value vs Call by reference (0) | 2023.09.03 |
[c++] 메모리의 세 가지 영역 : 데이터, 스택, 힙 (0) | 2023.09.03 |
[c++ 프로그래밍 입문] 5-2. 함수와 배열&구조체&포인터 (0) | 2023.08.30 |