Friend Function হল একটি বিশেষ ধরনের ফাংশন যা C++ এ ব্যবহৃত হয়। এটি ক্লাসের বাইরে থেকেও ক্লাসের private এবং protected ডাটা মেম্বার অ্যাক্সেস করতে পারে।

 

class MyClass {
private:
   int private_data;
   
public:
   MyClass() {
       private_data = 0;
   }
   
   // Friend function declaration
   friend void displayData(MyClass obj);
};

// Friend function definition
void displayData(MyClass obj) {
   // Can access private members
   cout << "Private data = " << obj.private_data;
}

 

সুবিধাসমূহ:

  1. ফাংশনালিটি (Functionality):
    • একাধিক ক্লাসের private ডাটা অ্যাক্সেস করতে পারে
    • দুই ক্লাসের মধ্যে ডাটা শেয়ার করা সহজ হয়
    • ক্লাসের বাইরে থেকে private ডাটা নিয়ে কাজ করা যায়
  2. ফ্লেক্সিবিলিটি (Flexibility):
    • একাধিক ক্লাসের ডাটা একসাথে প্রসেস করা যায়
    • ক্লাসের ইনক্যাপসুলেশন ভঙ্গ না করে ডাটা অ্যাক্সেস করা যায়
  3. কোড অপ্টিমাইজেশন:
    • পারফরম্যান্স বাড়ানো যায়
    • কোড পুনর্ব্যবহার করা সহজ হয়

অসুবিধাসমূহ:

  1. সিকিউরিটি রিস্ক:
    • private ডাটা অ্যাক্সেস করতে পারে, যা সিকিউরিটি ঝুঁকি তৈরি করে
    • ডাটা হাইডিং নীতি লঙ্ঘন করে
  2. মেইনটেনেবিলিটি:
    • কোড মেইনটেইন করা কঠিন হয়
    • ডিবাগিং জটিল হয়ে যায়
  3. কোড কমপ্লেক্সিটি:
    • প্রোগ্রামের জটিলতা বাড়ে
    • কোড বোঝা কঠিন হয়ে যায়

উদাহরণ:

class Box {
private:
   int length;
   
public:
   Box() {
       length = 0;
   }
   
   friend void printLength(Box b);
};

void printLength(Box b) {
   // Can access private member length
   cout << "Length = " << b.length << endl;
}

int main() {
   Box box;
   printLength(box);  // Will print: Length = 0
   return 0;
}