hosseinam1370
شنبه 15 فروردین 1394, 16:31 عصر
دوستان ، مگه ما در یک کلاسی بیایم یک تابع رو به عنوان دوست معرفی کنیم ، و متد اون تابع رو در خارج از کلاس بنویسیم ، نباید به تمامی توابع و متغییر های اون کلاس دسترسی داشته باشیم؟!!
پس چرا اینجا اینطوری نیست؟
یعنی چرا در این کد به متغییر name دسترسی ندارم من؟
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
friend void vorod();
};
void vorod()
{
cout << "name khod ra vared konid: ";
cin >> name;
}
int main()
{
daneshjoo hossein;
vorod();
system ("pause");
}
حالا طبق تعریف های کتاب ، اگه من بخام یه شی رو به عنوان پارامتر تعریف کنم و یه شی رو از تابع main به عنوان آرگومان بفرستم ، مثله کد زیر ،
اگه تابع به صورت friend هم تعریف نشه ، هیییچ مشکلی پیش نمیآد، دیگه چه نیاز به friend هست؟؟!!
میخام بگم این دوتا کد باهم فرقی ندارند::
با friend:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
friend void vorod(daneshjoo);
};
void vorod(daneshjoo m)
{
cout << "name khod ra vared konid: ";
cin >> m.name;
}
int main()
{
daneshjoo hossein;
vorod(hossein);
system ("pause");
}
بدونه friend:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
};
void vorod(daneshjoo m)
{
cout << "name khod ra vared konid: ";
cin >> m.name;
}
int main()
{
daneshjoo hossein;
vorod(hossein);
system ("pause");
}
با تشکر.
پس چرا اینجا اینطوری نیست؟
یعنی چرا در این کد به متغییر name دسترسی ندارم من؟
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
friend void vorod();
};
void vorod()
{
cout << "name khod ra vared konid: ";
cin >> name;
}
int main()
{
daneshjoo hossein;
vorod();
system ("pause");
}
حالا طبق تعریف های کتاب ، اگه من بخام یه شی رو به عنوان پارامتر تعریف کنم و یه شی رو از تابع main به عنوان آرگومان بفرستم ، مثله کد زیر ،
اگه تابع به صورت friend هم تعریف نشه ، هیییچ مشکلی پیش نمیآد، دیگه چه نیاز به friend هست؟؟!!
میخام بگم این دوتا کد باهم فرقی ندارند::
با friend:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
friend void vorod(daneshjoo);
};
void vorod(daneshjoo m)
{
cout << "name khod ra vared konid: ";
cin >> m.name;
}
int main()
{
daneshjoo hossein;
vorod(hossein);
system ("pause");
}
بدونه friend:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class daneshjoo
{
public:
string name;
};
void vorod(daneshjoo m)
{
cout << "name khod ra vared konid: ";
cin >> m.name;
}
int main()
{
daneshjoo hossein;
vorod(hossein);
system ("pause");
}
با تشکر.