PDA

View Full Version : تابع دوست کلاس



suraty
پنج شنبه 19 آبان 1390, 22:56 عصر
سلام
میشه دستورات تابع friend را در خود کلاس نوشت؟
من کد زیر رو نوشتم و بدون خطا جواب داد، اما نباید این طوری می شد، یعنی یه مقدار غیر منطقی شده، چون تابعی friend کلاس می شود که در خارج از تابع باشد و بخواهد از توابع و داده های کلاس استفاده کند.





#include"iostream.h"

#include"conio.h"

class class1{

int x;

public:

friend void f(class1 ob1){

ob1.x=200;

cout<<ob1.x;

}

};



int main(){

class1 ob;

f(ob);

return 0;

}

developing
شنبه 21 آبان 1390, 13:02 عصر
با سلام


سلام
میشه دستورات تابع friend را در خود کلاس نوشت؟
من کد زیر رو نوشتم و بدون خطا جواب داد، اما نباید این طوری می شد، یعنی یه مقدار غیر منطقی شده،

منطق شما يا منطق CPP؟
بله با منطق شما كه تازه كاريد و داريد ياد مي گيريد غير منطقيه ولي يك تابع مي تونه دوست يك كلاس باشه كه در اينصورت به تمام اعضاي اون كلاس دسترسي خواهد داشت(حالا اين تابع مي تونه توي خود كلاس نوشته بشه)
البته هيچ فردي نمياد اين كار رو بكنه در واقع دستور friend مياد و تابع رو به شكلي مثل تابع عضو كلاس قرار مي ده حالا يكي دلش خواست تابع عضو كلاسش خيلي عضو بشه مثل شما برنامه مي نويسه.اين اشكال از زبان نيست بلكه اشكال از نحوه ي كد نويسي شماست. مثل اينكه توي خانواده ي ما پدر من به هر بچه اش و يا افراد تحت تكفلش (مثلا پدر بزرگ و مادر بزرگ) روزي 1000 تومان پول مي ده حالا اگه يه جايي بگم كه من هم فرزند پدرم هستم و هم تحت تكفلم آيا پول بيشتري مي گيرم و آيا نقيض گفتم و غير منطقي؟(البته مي دونم مثال جالبي نبود ولي براي فهم مطلب بالا فكر كنم خوب باشه)