본문 바로가기

교육 노트/C++ 심화강의

[C++ 때려잡기] C++ 심화강의 7 inline 함수

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 3 생성자와 소멸자

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 4 복사 생성자와 깊은 복사

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 5 this 포인터

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 6 Class 선언과 정의


this 포인터를 강의할때 함수가 어떤식으로 동작하는지 설명하였다



요렇게 동작하였다.

그런데 여기서 함수포인터를 통하여 함수 내용으로 이동하는데 시간이 소요되게된다.

뭐 엄청나게 큰 타임은 아닐지라도 함수내용이 getter setter와 같이 별볼일 없거나 그러면 왔다 갔다 하는 시간이 더 걸리지도 모른다.

그래서 그러한 함수들은 그냥 포인터로 접근하지말고 사용하는 위치에다가 때려박고싶다.



요렇게


요렇게 동작하는 함수가 인라인 함수이다


1. 인라인 함수



요렇게 된다.

인라인 함수를 쓰면 컴파일 시간이 길어지고 프로그램 크기가 커진다
그러나 런타임 속도가 빠르다(함수로 넘어가는 시간을 절약)

역시 적재 적소에 잘 써야한다.

그리고 인라인 함수는 cpp가 아닌 *.h에 정의되어있어야하는데 대충 컴파일러가 미리 알고있어야되는 정보는 h에 들어간다고 생각하면 편하다

인라인이 무엇인지 알았으니 이제 사용해봐야한다.



요런식으로 클래스 내부에 선언과 동시에 정의를 하거나

inline 키워드를 앞에 붙여주면된다


inline 은 프로그램에 때려박는 특성상 언제끝나는지 모르는 재귀가 불가능하거나

뭐 여러가지 조건들이 있는데

중요한것은 inline키워드가 강제성 크게 지니지 않는다는것이다.

inline키워드를 박아도 걍 안되면 컴파일러가 대충알아서 inline을 사용하지 않는다.



728x90