Problem in Using Normal Function
- The main advantage of function is to save codding efforts, memory space and reusability.
- But whenever we call a function, it consume a lot of time say for example, when we are calling a function, computer save the program counter, variables into the stack and then start the execution of called function.
- After the execution gets over of the called function, computer again fetches the program counter and variables from the stack and resumes its execution.
- For large function this overhead is affordable but for small function this overhead puts extra time for execution.
Possible solution:
- One solution for the above problem is to use macro definitions, known as macro. There is facility of preprocessor macro in C but it is not real function so it does not provide error checking during the compilation.
Inline function
- C++ provides the solution for above problem by using inline function.
-
An inline function is a function, in which function definition is replaced at the place of function call in line during compilation.
- We can make function inline by placing keyword ‘inline’ before the function definition.
- Syntax for the inline function is as follow:
inline function-name(argument1, argument2, …)
{
// function body...
}
- As the function becomes large in size, the speed of inline function is decrease and some time it is better to call normal function rather than inline function.
- Also function required more memory during compilation because after compilation your program becomes large because function call statement is replaced by the function definition code.
- Inline function is request to compiler not command. So it is not compulsory that inline function is executed as inline.
- It may be executed as normal function. Compiler execute the inline function as normal function in the following condition:
- When function is too large in size.
- When function is too complicated.
- When function contains static variables
- When function is recursive.
- If, switch, goto, or looping structure is used in the function.
- Function call is made like a normal function as follow:.
main( )
{
cout << sum(50, 40);
}
inline int sum(int x, int y)
{
return(a + b);
}
Note: In C++ when function definition is written inside the class, that function is considered as the inline by default.