C++ Tutorial - friend

   Any data which is declared private inside a class is not accessible from outside the class. A function which is not a member or an external class can never access such private data. But there may be some cases, where a programmer will need need access to the private data from non-member functions and external classes. C++ offers some exceptions in such cases.

   A class can allow non-member functions and other classes to access its own private data, by making them as friends. This part of C++ tutorial essentially gives two important points.

  • Once a non-member function is declared as a friend, it can access the private data of the class
  • similarly when a class is declared as a friend, the friend class can have access to the private data of the class which made this a friend
   Let's see a sample in this C++ tutorial for each of the above cases.

C++ Tutorial - Friend function sample:

    #include <iostream.h>
    //Declaration of the function to be made as friend for the C++ Tutorial sample
    int AddToFriend(int x);
    class CPP_Tutorial
    {
       int private_data;
       friend int AddToFriend(int x);
    public:
       CPP_Tutorial()
      {
          private_data = 5;
       }
    };
    int AddToFriend(int x)
    {
       CPP_Tutorial var1;
       return var1.private_data + x;
    }
    int main()
    {
       cout << "Added Result for this C++ tutorial: "<< AddToFriend(4)<<endl;
    } 

    The output of the above C++ Tutorial sample will be
       Added Result for this C++ tutorial: 9

C++ tutorial - friend class:

    Declaration of a friend class is also similar. Only thing is a class definition is slightly different.

C++ Tutorial - Friend function:

    #include < iostream.h >
    class CPP_Tutorial
    {
       int private_data;
       friend class friendclass;
    public:
       CPP_Tutorial()
       {
          private_data = 5;
      }
    };
    class friendclass
    {
    public:
       int subtractfrom(int x)
       {
          CPP_Tutorial var2;
          return var2.private_data - x;
       }
    };
    int main()
    {
       friendclass var3;
       cout << "Added Result for this C++ tutorial: "<< var3.subtractfrom(2)<     }

   The output of the above C++ Tutorial sample will be
       Subtracted Result for this C++ tutorial: 3

   This is a good way out given by C++ to avoid restrictions on private variables. But this should be used with caution though. If all the functions and classes are declared as friends, then the concept of encapsulation and data security will go for a toss.

   That is why the concept of friend functions and classes should be used with proper judgment.

Close    To Top
  • Prev Article-Programming:
  • Next Article-Programming:
  • Now: Tutorial for Web and Software Design > Programming > cplus > Programming Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction