சி ++ மொழியில் இன்லைன் ஃபங்க்சன்.
சி++ மொழியின்
முக்கியமான அம்சங்களில் ஒன்று இன்லைன் ஃபங்க்சன் ஆகும்.முதலில் சி++ மொழியில் இன்லைன்
எவ்வாறு பயன்படுகின்றது என்று பார்ப்போம்.
முதலில் நிரல்
இயங்கும் நேரத்தில் ஃபங்க்சன் அழைப்பு வரும் பொழுது அதன் அட்ரஸ் பதியப்படுகின்றது.
அதன் பின் ஆர்க்கியூமெண்ட் மதிப்புகள் ஃபங்க்சனுக்கு காப்பி செய்யப்படுகின்றன. ஃபங்க்சன்
இயக்கி முடித்த பின் அதன் ரிடர்ன் மதிப்பு மெமெரியில் ஸ்டோர் செய்யப்படுகின்றது.அதன்
பின் கன்ட் ரோல் மெயின் ஃபங்க்சனுக்கு ரிடர்ன் செய்யப்படுகின்றது. இவ்வாறு ஒரு ஃபங்க்சன் அழைக்கப்பட்டு அது இயக்கப்பட்டு
ரிடர்ன் ஆகி வருவதின் ஸ்விட்ச் ஓவர் டைம் அதிகம்.
இதை சரி செய்யவே இன்லைன் ஃபங்க்சன் பயன்படுகின்றது.
இந்த ஃபங்க்சனின்
முன் inline என்ற கீவேர்டு சேர்க்கப்படுகின்றது.இந்த ஃபங்கசன் கம்பைல் டைமில் அதன்
வரிகள் மெமரியில் அழைக்கும் ஃபங்க்சனில் ஒன்றிணைக்கப்படுகின்றன.இதனால் இயங்கு நேரத்தில் ஃபங்க்சன் அழைப்பு வருகையில் ஃபங்க்சனுக்கு
ஸ்விட்ச் ஓவர் ஆக தேவையில்லை.எனவே நேரம் மிச்சம்.
இதனால் நிரலின்
திறனும் அதிகரிக்கின்றது.
சிண்டாக்ஸ்
inline
return-type function-name(parameters)
{
// function code
}
இன்லைன் ஒரு
கோரிக்கையே அன்றி ஒரு கட்டளை அல்ல என்பதை நிணைவில் கொள்ளுங்கள்.
கீழே உள்ள்
சூழ்நிலைகளின் இன்லைன் செயன்படாது.
1.
ஃபங்க்சனில்
லூப் இருந்தால்
2.
ஃபங்க்சனில்
ஸ்டேடிக் வேரியபிள் இருந்தால்.
3.
ரிகர்சிவ்
ஃபங்க்சனாக இருந்தால்.
4.
ஃபங்க்சன்
ரிடர்ன் டைப் வாய்ட் அல்லாது இருக்கும் பொழுது ஃபங்க்சனில் ரிடர்ன் ஸ்டேட்மெண்ட் இல்லாது
இருந்தால்.
5.
ஃபங்க்சனில்
ஸ்விட்ச் அல்லது கோடூ ஸ்டேடமெண்ட் இருந்தால்
இன்லைன்
ஃபங்க்சனின் பயன்கள்
1.
ஃபங்க்சன்
அழைப்பு ஓவர்ஹெட் தேவையில்லை.
2.
ஃபங்க்சன்
அழைக்கப்படும் பொழுது ஸ்டேக்கில் PUSH/POP வேரியபிள் ஓவர்ஹெட் கிடையாது.
3.
ஃபங்க்சன்
ரிடர்ன் ஓவர் ஹெட் டைம் தேவையில்லை.
இன்லைன் ஃபங்க்சன் குறைபாடுகள்.
1.
கூடுதலாக
சேர்க்கப்படும் ஃபங்க்சனின் வேரியபிள்கள் மெமரி சைஸை பெரிதடையச் செய்கின்றன.
2.
ஒவ்வொரு
ஃபங்க்சனும் அழைப்படும் ஃபங்க்சனின் இனைக்கப்படுவதால் நிரல் நீளம் அதிதாகின்றது.
3.
இன்லைன்
ஃபங்க்சன்கள் என்பட்டட் சிஸ்டமிற்க்கு பயன்படாது .ஏனெனில் அதன் இயங்கு நேரத்தைவிட மெமரி
சைஸ் தான் முக்கியம்.
சான்று நிரல்.
#include
<iostream>
using
namespace
std;
inline
int
cube(int
s)
{
return
s*s*s;
}
int
main()
{
cout
<< "The cube of 3 is: " << cube(3) <<
"\n";
return
0;
}
//Output: The cube of 3 is: 27
இன்லைன் ஃபங்க்சன்களும்
கிளாஸும்.
இன்லைன் ஃபங்க்சன்களை
கிளாசின் உள்ளேயும் எழுதலாம். உண்மையில் கிளாசின் உள்ளே எழுதும் ஃபங்க்சன்களும் இன்லைன்
தான்.
இன்லைன் என்பதை
நீங்கள் எக்ஸ்பிளிசெட் ஆக குறிப்பிட விரும்பினால் அந்த ஃபங்க்சனை கிளாசின் உள்ளே அறிவித்து
விட்டு வெளியே ஃபங்க்சனை எழுதவும்.
class
S
{
public:
inline
int
square(int
s)
// redundant use of inline
{
//
this function is automatically inline
//
function body
}
};
மேலே உள்ள நிரலானது பெஸ்ட் புரோக்கிராமிங்க் ஸ்டைல்
அல்ல என்வே கீழ்வருமாறு எழுதவும்.
class
S
{
public:
int
square(int
s);
// declare the function
};
inline
int
S::square(int
s)
// use inline prefix
{
}
கீழே வரும்
நிரல் மற்றும் ஒரு சான்றாக விளங்குகின்றது.
#include
<iostream> using
namespace std; class
operation { int
a,b,add,sub,mul; float
div; public: void
get(); void
sum(); void
difference(); void
product(); void
division(); }; inline
void operation :: get() { cout
<< "Enter first value:"; cin
>> a; cout
<< "Enter second value:"; cin
>> b; } inline
void operation :: sum() { add
= a+b; cout
<< "Addition of two numbers: " << a+b <<
"\n"; } inline
void operation :: difference() { sub
= a-b; cout
<< "Difference of two numbers: "
<< a-b << "\n"; } inline
void operation :: product() { mul
= a*b; cout
<< "Product of two numbers: " << a*b <<
"\n"; } inline
void operation ::division() { div=a/b; cout<<"Division
of two numbers: "<<a/b<<"\n"
; } int
main() { cout
<< "Program using inline function\n"; operation
s; s.get(); s.sum(); s.difference(); s.product(); s.division(); return
0; } |
Output:
Enter
first value: 45
Enter
second value: 15
Addition
of two numbers: 60
Difference
of two numbers: 30
Product of
two numbers: 675
Division
of two numbers: 3
நன்றி.
முத்து கார்த்திகேயன்,மதுரை
To learn more about c, c++, java, c#, vb.net, asp.net, asp.net core, javascript, angular, react js, web designing, fullstack web development , python , php, my sql, sql server ,ms-office, tally contact:
919629329142
both direct and on line coaching available.
No comments:
Post a Comment