یک تابع دوست (Friend Function) برای یک کلاس، در خارج از دامنه (scope) آن کلاس تعریف میشود، اما حق دسترسی به همه اعضای خصوصی و عمومی آن کلاس به آن اعطا میشود. اگرچه ممکن است که نمونه اولیه تابع دوست درون کلاس قرار داشته باشد، با اینحال این توابع دوست اعضای کلاس به حساب نمیآیند.
یک دوست ممکن است یک تابع، الگوی تابع، تابع عضو، کلاس یا الگوی کلاس باشد که در همه این موارد، کل کلاس و اعضای آن باهم دوست هستند.
برای اعلان یک تابع به عنوان دوست یک کلاس، پیش از تعریف نمونه اولیه کلاس، کلیدواژه friend را به صورت زیر قرار میدهیم.
class Box { double width; public: double length; friend void printWidth( Box box ); void setWidth( double wid ); };
برای اعلان همهی توابع عضو کلاس ClassTwo به عنوان دوست ClassOne، عبارت زیر را در تعریف کلاس ClassOne قرار دهید.
friend class ClassTwo;
برنامهی زیر را ملاحظه کنید.
#include <iostream> using namespace std; class Box { double width; public: friend void printWidth( Box box ); void setWidth( double wid ); }; // Member function definition void Box::setWidth( double wid ) { width = wid; } // Note: printWidth() is not a member function of any class. void printWidth( Box box ) { /* Because printWidth() is a friend of Box, it can directly access any member of this class */ cout << "Width of box : " << box.width <<endl; } // Main function for the program int main() { Box box; // set box width without member function box.setWidth(10.0); // Use friend function to print the wdith. printWidth( box ); return 0; }
با اجرای این برنامه، خروجی زیر حاصل میشود.
Width of box : 10
منبع: ترجمه از سایت tutorialspoint.com
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.