인라인 클래스 멤버 함수
클래스 선언의 본문에 정의된 함수는 인라인 함수입니다.
예제
다음 클래스 선언에서 Account 생성자는 인라인 함수입니다. 멤버 함수인 GetBalance, Deposit 및 Withdraw는 inline으로 지정되지 않았지만 인라인 함수로 구현할 수 있습니다.
// Inline_Member_Functions.cpp
class Account
{
public:
Account(double initial_balance) { balance = initial_balance; }
double GetBalance();
double Deposit( double Amount );
double Withdraw( double Amount );
private:
double balance;
};
inline double Account::GetBalance()
{
return balance;
}
inline double Account::Deposit( double Amount )
{
return ( balance += Amount );
}
inline double Account::Withdraw( double Amount )
{
return ( balance -= Amount );
}
int main()
{
}
참고
클래스 선언에서 함수가 inline 키워드 없이 선언되었습니다.inline 키워드는 클래스 선언에서 지정할 수 있으며 결과는 동일합니다.
주어진 인라인 멤버 함수는 모든 컴파일 단위에서 동일한 방식으로 선언되어야 합니다. 이 제한 사항으로 인해 인라인 함수는 마치 인스턴스화된 함수처럼 동작합니다. 또한 인라인 함수의 정의는 정확히 하나만 있어야 합니다.
클래스 멤버 함수는 해당 함수에 대한 정의에 inline 지정자가 포함되지 않으면 외부 링크를 기본적으로 가집니다. 앞의 예제는 이들 함수가 inline 지정자를 사용하여 명시적으로 선언될 필요가 없음을 보여 줍니다. 함수 정의에서 inline을 사용하면 인라인 함수가 됩니다. 하지만 함수 호출 후에 해당 함수를 inline으로 다시 선언하는 것은 올바르지 않습니다.