وبلاگ من

۱ مطلب با کلمه‌ی کلیدی «c++» ثبت شده است

توابع و کلاس های دوست

دوشنبه, ۱۲ تیر ۱۳۹۶، ۱۱:۳۰ ق.ظ

برای اینکه به یک تابع یا کلاس (مثلا تابع B) اجازه دهیم که به مقادیر کلاس (مثلا  A) دسترسی پیدا کند . باید برای کلاس A تعریف کنیم که تابع یا کلاس B را به عنوان دوست در نظر بگیر برای این کار از کلمه کلیدی friend در بدنه کلاس A به همراه امضای تابع B استفاده می کنیم :

class A
{
friend void B();
};
void B() {}

برای مثال کلاسی به نام test را در نظر بگیرد ... تابع show برای این کلاس را به صورت دوست تعریف می کنیم:

#include <iostream>
using namespace std;
class test
{
int x,y;
friend void show(test);
public:
test(int a,int b) //contractor
{
x=a;
y=b;
}
};
void show(test T) 
{
cout<<T.x<<T.y<<endl;
}

int main(int argc, char** argv) {

test A(2,3);
show(A);

test B(8,9);
show(B);

return 0;
}


و برای دو کلاس به عنوان دوست :

کلاس B به عنوان دوست برای کلاس A تعریف شده است یعنی می تواند به متغییر ها و توابع خصوصی و محافظت شده ی آن دسترسی داشته باشد . ان دسترسی از طریق شی از A امکان پذیر است مثلا در این مثال ما به کمک شی a از نوع کلاس A در تابع set کلاس B مقادیر x و y را تغییر می دهیم.


#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
friend class B;
private:
int x;
protected:
int y;
public:
A(){ x = 0; y = 0; } //contractor
};
class B
{
public:
void set(A a)
{
a.x = 2;
a.y = 2;
}
};



int _tmain(int argc, _TCHAR* argv[])
{
B Mb;
A Ma;
Mb.set(Ma);
return 0;
}


  • مرتضی رحیم زاده