PDA

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



alirah84
یک شنبه 30 مهر 1391, 15:36 عصر
سلام
این مثالی که پایین گذاشتم در مورد تابع دوست هست.من چند تا کتاب و سایت و خوندم ولی درست نفهمیدم قواعد نوشتاری تابع دوست چیه.مفهومش رو فهمیدم مشاالله همه جا اون دو خط رو زده بود.
مثلا در این مثال پایین:


#include <iostream>
using namespace std;

class Rectangle {
int width, height;

public:
Rectangle(int w = 1, int h = 1):width(w),height(h){}
friend void display(Rectangle &);
};

void display(Rectangle &r) {
cout << r.width * r.height << endl;
}

int main () {
Rectangle rect(5,10);
display(rect);
return 0;

{

اول اومده یه کلاس تعریف کرده به اسم Rectangleکه دو عضو اختصاصی داره به نام width ,hight .بعدش میرسیم به دو تا سطر توی public که یکیش اینه:


Rectangle(int w = 1, int h = 1):width(w),height(h){}
میشه یکی بگه منظور از این چیه؟قواعد نوشتاریش رو از کجا اورده؟اصلا چی رو میخواد بگه؟سازنده است یا تابع؟
خط بعدیش هم اینه:

friend void display(Rectangle &);
خب اینم تابع دوسته ولی داخل آرگومانش چیه؟ منظور از ( Rectangle &) چیه؟ مگه نباید مثلا intباشه یا یه چیز دیگه ای؟
توی کد پایینم مربوط به تابع دوسته:

};

void display(Rectangle &r) {
cout << r.width * r.height << endl;
}
بازم آرگومانش رو نمیفهمم.هرجا یه آرگومانی آورده. یکی لطف کنه بگه آرگومانهای داخل تابع دوست بر چه اساسیه.
در قسمت main هم یک شی از کلاس تعریف کرده که مقدار 5 و 10 رو برای اعضا در نظر گرفته و بعدتابع دوست رو صدا زده و یه آرگومان براش گرفته به نام rect .مگه متغیر یا عدد نباید قرار بگیره داخل تابع؟
کلا قواعد نوشتاری مربوط به تابع دوست رو نمیفهمم .هرجا یه جور برای خودش نوشته .اگه یکی توضیح بده در این مورد ممنون میشم.

مسعود اقدسی فام
دوشنبه 01 آبان 1391, 21:05 عصر
اینم بخونید:


http://algorithmha.ir (http://algorithmha.ir/post-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%AF%D9%88%D8%B3%D8%AA-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-%D8%B3%DB%8C-%D9%BE%D9%84%D8%A7%D8%B3-%D9%BE%D9%84%D8%A7%D8%B3.aspx)