பொதுவாக ஒரு கிளாசில்
எழுதப்படும் டேட்டா(வேரியபிள்) ப்ரைவேட் (private) ஆக இருக்கும். ஃபங்சன்ஸ் public
ஆக இருக்கும். ஒரு கிளாசினுடைய private மெம்பர்களை அந்த கிளாஸின் functions மட்டும்
தான் அனுக டியும்.வெளியே உள்ள functons அந்த கிளாசின் private மெம்பர்களை அணுக முடியாது.
ஆனால் ஒரு function ஆனதை அந்த கிளாசிற்கு friend என அறிவித்தால் அந்த கிளாசின்
private மெம்பர்களை அணுக முடியும்.இதுவே friend function எனப்படுகின்றது.
சான்று நிரல்-1
include
<iostream>
using namespace std;
class Book
{
private:
int book_no;
char
book_name[20];
public:
void getdata()
{
cout<<"Enter book number: ";
cin>>book_no;
cout<<"Enter book name: ";
cin>>book_name;
}
friend void
showdata(Book);
};
void showdata(Book bk)
{
cout<<"Book no: "<<bk.book_no<<" Book
name: "<<bk.book_name<<endl;
}
int main()
{
Book b;
b.getdata();
showdata(b);
return 0;
}
வெளியீடு:
Enter the
book number:15;
Enter the
book name:c++
Book no:15
Book name c++
இப்போது ஒரு
function ஆனது இரண்டு வெவ்வேரு கிளாஸ்களின் friend என அறிவிக்கப்படுகின்றது.இப்போது
அந்த function இரண்டு கிளாஸினுடைய private மெம்பர்களையும் ஆக்சஸ் செய்யலாம்.
சான்று நிரல்-2
#include <iostream>
using namespace std;
class Second;
class First
{
private:
int first_num;
public:
First(int n)
{
first_num=n;
}
friend int
add(First,Second);
};
class Second
{
private:
int second_num;
public:
Second(int n)
{
second_num=n;
}
friend int
add(First,Second);
};
int add(First f,Second s)
{
return
f.first_num+s.second_num;
}
int main()
{
First f(10);
Second s(15);
cout<<"Result is:"<<add(f,s)<<endl;
return 0;
}
வெளியீடு:
Result is:25
Friend class:
இப்போது ஒரு கிளாசையே
மற்றொரு கிளாசின் friend என அறிவித்தால் அந்த கிளாசின் எல்லா function ஆனவையும் அந்த
மற்றொரு கிளாசின் private மெம்பர்களை ஆனுக முடியும்.இதுவே friend class எனப்படுகின்றது.
சான்று நிரல்-3
#include <iostream>
using namespace std;
class First
{
private:
int first_num;
public:
First(int n)
{
first_num=n;
}
friend class
Second;
};
class Second
{
public:
void show_data(First
f)
{
cout<<"value
is: "<<f.first_num<<endl;
}
};
int main()
{
First f(10);
Second s;
s.show_data(f);
return 0;
}
வெளியீடு:
value is: 10
------முத்து கார்த்திகேயன்,மதுரை.
No comments:
Post a Comment