توابع دوست (Friend Functions)
گاهی لازم است به داده خصوصی دسترسی داشته باشیم. در این حالت، «تابع دوست (Friend Function)» کمک می کند. این تابع عضو کلاس نیست، اما به داده private دسترسی دارد.
توابع دوست در ++C چیست؟
معمولاً عضو خصوصی با «getter/setter» قابل دسترسی است. اما تابع «friend» استثنا دارد و مستقیماً می بیند. این تابع داخل کلاس فقط «اعلام» می شود و بیرون «تعریف» می شود.
نمونه کد از منبع
class Employee {
private:
int salary;
public:
Employee(int s) {
salary = s;
}
friend void displaySalary(Employee emp);
};
void displaySalary(Employee emp) {
cout << "Salary: " << emp.salary;
}
int main() {
Employee myEmp(50000);
displaySalary(myEmp);
return 0;
}
displaySalaryداخل کلاس فقط اعلام شده است.- این تابع عضو کلاس نیست اما به
salaryدسترسی دارد. - در
main()شیء می سازیم و تابع دوست را صدا می زنیم.
کی از تابع دوست استفاده کنیم؟
- وقتی نیاز به دسترسی کنترل شده به داده خصوصی داریم.
- وقتی نمی خواهیم منطق را داخل خود کلاس بگذاریم.
نکته: اول کپسوله سازی را بلد باش. به کپسوله سازی و مشخصه های دسترسی سر بزن. همچنین برای پایه ها، صفحه کلاس ها/اشیاء را مرور کن. برای تمرکز سئو: توابع دوست.
تمرین سه گام
- کلاسی با یک صفت private بساز.
- تابع دوست را داخل کلاس اعلام کن.
- بیرون کلاس تعریف کن و آن صفت را چاپ کن.
جمع بندی سریع
- تابع دوست عضو کلاس نیست.
- به private دسترسی مستقیم دارد.
- اعلام داخل کلاس، تعریف بیرون کلاس.
- با احتیاط استفاده کن؛ کپسوله سازی مهم است.