📚책읽기

[C++] 인라인 함수, 참조 변수

공대 컴린이 2023. 1. 24. 16:17
728x90

인라인 함수(inline)

인라인 기능은 C에 없다가 C++언어에서 새로 생겨난 기능이다.

매크로 함수와 비슷하지만, 매크로는 인라인 코드를 소스적으로 구현한 형태이기 때문에 매개변수를 넘기는 것이 아니라 텍스트를 대체함으로써 동작한다.

// 인라인 함수 정의
inline double square(double x) {return x * x};

인라인 함수는 컴파일된 함수 코드가 프로그램의 다른 코드 안에 직접 삽입되어있다. 즉, 컴파일러가 함수 호출을 그에 대응하는 함수 코드로 대체한다는 것을 의미한다.

인라인 코드를 이용하면 함수를 그 자리에서 처리하므로, 그 함수를 수행하기 위해 프로그램이 다른 주소로 점프했다가 돌아올 필요가 없다. 따라서 일반함수보다 약간 빠르게 수행되지만, 메모리 사용 측면에서는 일반 함수보다 불리하다는 단점이 있다.

참조 변수 (reference, &)

C++에는 참조 변수라는 새로운 복합형 언어를 추가했는데, 참조는 미리 정의된 어떤 변수의 실제 이름 대신 쓸 수 있는 대용 이름을 말한다. 참조를 매개변수로 사용한다면, 그 함수는 복사본 대신 원본 데이터를 가지고 작업하게 된다. 예를 들어 덩치가 큰 구조체를 처리해야 하는 함수에서 포인터 대신에 참조를 사용하면 구조체의 복사본을 만들지 않고 원형을 가지고 작업할 수 있다.

 

int rats;
int & rodents = rats; // rodents는 참조이다
int * prats = &rats;  // prats는 포인터이다

 

여기서 &가 주소 연산자가 아니라, 데이터형 식별자의 일부로 참조 선언하여 사용된 것이다.int & 은 int에 대한 참조를 의미한다.

참조가 포인터와 다른점은 참조는 선언할 때 참조 변수를 무조건 함께 초기화해주어야 한다. int & rodent; 이처럼 변수를 먼저 선언하고 그뒤에 rodent = rat; (X) 초기화해주는것은 불가능하다. 또한 참조는 const로 선언하는것이 좋다. const참조는 구조체나 클래스 설계를 복사하는 데 드는 시간과 공간을 절약한다.

728x90