Saturday, July 1, 2017

C++ Friend Function என்றால் என்ன?


பொதுவாக ஒரு கிளாசில் எழுதப்படும் டேட்டா(வேரியபிள்) ப்ரைவேட் (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

------முத்து கார்த்திகேயன்,மதுரை.

ads Udanz

No comments:

Post a Comment