وبلاگ من

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

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

برای اینکه به یک تابع یا کلاس (مثلا تابع 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;
}


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

c++

friend

دوست

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی