الگوریتمستان - توابع دوست کلاس در ++C

آشنایی با توابع دوست کلاس در زبان برنامه‌نویسی ++C و کاربرد آنها در سربارگذاری عملگرها

✤    ۱۱ بهمن ۱۳۸۵ - آخرین به‌روزرسانی: ۱۶ خرداد ۱۳۸۸

توابع دوست کلاس‌ها از‌ جمله موارد بحث برانگیز برنامه‌نویسی شی‌ءگرا به زبان ++C هستند. چرا که یکی از اصول اساسی شیءگرایی، یعنی پنهان‌سازی اطلاعات، را نقض می‌کنند. با این وجود به خاطر کاربردهای متعددی که دارند از حضورشان نمی‌توان چشم‌پوشی کرد.

به زبان ساده، توابع دوست یک کلاس توابعی هستند که عضو کلاس نیستند، اما به تمامی داده‌ها و توابع خصوصی و محافظت شده آن دسترسی دارند.

یک مثال ساده

  [برگرد بالا]

  

class myclass {

    friend void print_a(myclass);

  private:

    unsigned a;

  public:

    myclass(int r) {

      a = r > 0 ? r : - r;

    }

    void print() {

      cout << a;

    }

};

  

void print_a(myclass ob) {

  cout << ob.a;

}

void main() {

  myclass ob(9);

  ob.print();

  cout << "\t";

  print_a(ob);

}

  

خروجی به این صورت است:

  

9    9

  

تابع دوست print_a علیرغم اینکه عضو کلاس myclass نیست، اما به عضو خصوصی a از کلاس دسترسی دارد.

این قطعه برنامه روش استفاده از توابع دوست را نشان می‌دهد. توابع دوست با کلمه کلیدی friend در ابتدای تعریفشان مشخص می‌شوند. توجه داشته باشید که چون این توابع عضو کلاس نیستند نباید عملگر تعیین حوزه (::) زمان تعریف بلوک بدنه آنها استفاده شود. یعنی این عبارت نادرست است:

  

void myclass::print_a(myclass ob)

  

چرا که ممکن است یک تابع، تابع دوست برای چندین کلاس مختلف باشد. درضمن بلوک بدنه این توابع باید بیرون از تعاریف هر کلاسی نوشته شوند.

اما چرا به توابع دوست نیاز داریم؟ چه کاربردهایی دارند که علیرغم نقض آشکار قوانین شیءگرایی از آنها استفاده می‌شود؟

  

سربارگذاری عملگرها با توابع دوست

  [برگرد بالا]

قبلا در مورد سربازگذاری عملگرها در زبان ++C مطلبی ارائه شده است. در این مطلب تاکید شده بود که برای عملگرهای دودویی (مثل جمع و ضرب و ...) شیء سمت چپ، تابع عملگر مربوطه را فراخوانی می‌کند و شی سمت راست به عنوان آرگومان به تابع ارسال می‌شود. به عنوان مثال اگر عملگر + برای کلاسی سربارگذاری شده باشد، دو عبارت زیر معادل هم هستند:

  

ob1 + ob2    ≡    ob1.operator+(ob2)

  

حال فرض کنید کلاسی برای کار با اعداد مختلط با نام comp تعریف کرده‌ایم. عملگر + هم مطابق با عمل جمع اعداد مختلط تعریف شده است. برای جمع زدن یک عدد حقیقی با یک عدد مختلط از تابع + به صورت زیر استفاده می‌کنیم:

  

comp operator + (double f)

  

اما این تابع تنها برای جمع عدد حقیقی از سمت راست کاربرد دارد و نمی‌تواند از سمت چپ عدد حقیقی را با عدد مختلط جمع کند. به عنوان نمونه، برای یک عدد مختلط مانند c، تابع فوق عبارت c + 3.5 را به خوبی محاسبه می‌کند. اما اگر جای دو عملوند عوض شود، کاری از دست این تابع بر نمی‌آید. چرا که در این حالت شیء سمت چپ از جنس خود کلاس نخواهد بود.

اینجاست که تابع دوست به کمک ما می‌آید. به تعریف زیر دقت کنید:

  

friend comp operator + (double f , comp c)

  

زمانی که از توابع دوست برای سربارگذاری عملگرهای دودویی استفاده می‌شود - بر خلاف حالت اصلی - هر دو شیء به صورت آرگومان به تابع ارسال می‌گردند. آرگومان اول شی سمت چپ و آرگومان دوم شیء سمت راست را مشخص می‌کند. با تعریف بالا به راحتی عبارت زیر هم محاسبه می‌شود:

  

c2 = 3.5 + c1;

  

کد کامل این کلاس به این صورت خواهد بود:

  

class comp {

    friend comp operator + (double, comp);

  private:

    double real, imag;

  public:

    comp(double r, double i) {

      real = r;

      imag = i;

    }

    comp operator + (comp r) {

      comp temp(real + r.real, imag + r.imag);

      return temp;

    }

    comp operator + (double r)< {/P>

      comp temp(real + r, imag);

      return temp;

    }

};

  

comp operator + (double l, comp r) {

  comp temp(l + r.real, r.imag);

  return temp;

}

  

تذکر: این تعریف برای کلاس اعداد مختلط به هیچ وجه کامل نیست و تنها قسمت کوچکی از آن را شامل می‌شود. البته کتابخانه‌های زبان ++C هم برای کار با اعداد مختلط توابع و کلاس‌هایی دارند که همه نیازها را برآورده می‌کنند.

نکته مهم: برای سربارگذاری عملگرهای جریان (یعنی >> و <<) چاره‌ای ندارید جز این که از توابع دوست استفاده کنید (چرا؟).


نسخه‌ی اولیه‌ی این نوشته از وب‌سایت برنامه‌نویسی و طراحی الگوریتم به الگوریتمستان منتقل شده است.

تا کنون ۲۴ امتیاز ثبت شده
نوشته لایک نداشت؟
 
به اشتراک گذاری نوشته

amasoudfam.ir/l/jh1gp

اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram

نام: *  
پست الکترونیک (محرمانه):
پیام: *  
• moein
۱۲ بهمن ۱۳۸۵، ساعت ۰۹:۲۵

salam

ba tabadole logo movafeghi khabaram kon

by

• yasin ghasemi
۱۲ بهمن ۱۳۸۵، ساعت ۱۱:۰۵

salam link u gharar gereft

• رامین
۱۲ بهمن ۱۳۸۵، ساعت ۱۵:۰۲

hi,

can u write about hsin.hr/coci ?!

Thanks

ramin

• mansour
۱۲ بهمن ۱۳۸۵، ساعت ۱۸:۰۴

پرژه در مورد سي ++

• fahime
۱۲ بهمن ۱۳۸۵، ساعت ۲۱:۴۲

سلام خسته نباشید

من می خواستم اگر براتون امکان داره کد برنامه ای رو بنویسید که سطر وستون یک ماتریس پویا را بگیرد و اعضای تکراری را در مجاورت یکدیگر قرار دهد.هر عضو می توانند فقط سطری وستونی حرکت کند ویکی یکی و در انتها تعداد کمترین حرکت برای مرتب شدن این ماتریس را به ما بدهد و ماتریس را نشان دهد.

ممننم

خدانگگهدار

• آرزو
۱۳ بهمن ۱۳۸۵، ساعت ۱۶:۴۶

سلام و خسته نباشید

من که چیزی نمی فهمم...از اینا. ولی خوب اومدم بگم سر زدم.

• maskofgod
۱۳ بهمن ۱۳۸۵، ساعت ۱۸:۳۱

آخ آخ آخ

شرمنده

اما یه حال اساسی در راه است !!!

هم دوره گرد

هم مسیله maze اوکی

دوره گرد رو میتونم تشریح کنم

گرچه کامنت هم توش هست

کامنت فارسی بذارم یا انگلیسی ؟

• behnam
۱۴ بهمن ۱۳۸۵، ساعت ۰۰:۴۷

salam be dadam beresidbarnameei be zabane pascal bara mohasebeye determinane 1 matrix n*n mikham plz har che saritar rahnamaeim konin

merc

مسعود اقدسی‌فام
۱۴ بهمن ۱۳۸۵، ساعت ۱۴:۲۳

از لطف همه دوستان ممنونم.

آرزو خانم شکسته نفسی می فرمایید!

حسام جان جواب شما رو تو سایت خودتون می دم.

بهنام جان سایت رو بگردی شاید یه چیزهایی پیدا کنی!!

• پاشا فرهنگ
۱۴ بهمن ۱۳۸۵، ساعت ۱۷:۰۶

آقا با تبادل لینک موافقید خبرم کتنید لینکم را قرارداده و برام بفرستید ممنون می شم

• بابک
۱۶ بهمن ۱۳۸۵، ساعت ۱۱:۳۹

سلام خسته نباشید

دنبال یه برنامه تو c یا c++ میگشتم برای جمع ،تفریق ،ضرب،وتقسیم دو عدد خیلی بزرگ مثلا 50 رقم به بالا

لطفا کمکم کنید

• عیسی
۱۶ بهمن ۱۳۸۵، ساعت ۲۱:۱۸

آقا موبایله نو مبارک!!!!!!!!!!!!!!!!!!

• شاهرخ
۱۶ بهمن ۱۳۸۵، ساعت ۲۲:۲۰

سلام مسعود جان

من هم بافتخار مي كنم

راستي چه خبر از دانشكده و بچه ها؟؟؟؟؟

كلاس ها از كي شروع مي شند؟

مسعود اقدسی‌فام
۱۷ بهمن ۱۳۸۵، ساعت ۰۰:۱۱

شاهرخ جان لطف داری. کلاسهای شما رو نمی دونم، اما کلاسهای ما از دوشنبه هفته بعد شروع می شه!!

عیسی جان ممنون از لطفت.

• masood
۱۷ بهمن ۱۳۸۵، ساعت ۲۲:۰۳

salam

logoye shoma dar saitebia2web gharar gereft.

ya hagh

• مهدی
۱۸ بهمن ۱۳۸۵، ساعت ۰۰:۴۷

در مو ر د  vb   سایت می خوام لطفا کمک کنید. با تشکر

• hasty
۱۸ بهمن ۱۳۸۵، ساعت ۱۸:۲۳

salam. mamnoon az saite kheili khoobetoon .

man  barname ye QUICK SORT ro be zabane c mikhastam

mishe lotfan rahnamaeim konid?

kheili  hayatiye!!!

• sina_okok
۱۸ بهمن ۱۳۸۵، ساعت ۲۰:۳۷

من چند تا سوال داشتم در مورد پاسکال

1.  برنامه ای بنویسید که اعداد 3 رقمی که از هر دو طرق یکسان خوانده می شوند را            تعیین چاپ کند .(مثل 565و و 919و 141 )  

2.  برنامه ای بنویسید که رشته ای را دریافت کرده و همه blankهای رشته را حذف کرده و رشته را 2بار چاپ کند

3.  زیر برنامه ای بنویسید که مساحت یک مثلت با اضلاعی به طول A,B,C   را بیابد فرمولی که بایستی استقاده شود عبارتست از

                        (AREA = (1/4) √ (A+B+C)+(A-B+C)+(A+B-C

        این عبارت   زیر رادیکال است  (A+B+C)+(A-B+C)+(A+B-C

مسعود اقدسی‌فام
۱۹ بهمن ۱۳۸۵، ساعت ۰۰:۲۰

مسعود خان! ممنون از لطفت.

مهدی عزیز! متاسفانه الان حضور ذهن ندارم. اگه چیزی یادم اومد می گم!

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

سینا جان! چه کمکی راجع به این سوالها می تونم بکنم؟

• fatemeh
۲۰ بهمن ۱۳۸۵، ساعت ۱۵:۱۴

salam

bebakhshid be khatere takhiram

hanooz kampiuteram dorost nashode

bayad dobare windowzesho nasb konam

taze messengeram nadaram

• hichkas
۷ فروردین ۱۳۸۶، ساعت ۱۲:۴۳

سلام

بابا تورو خدا این الگوریتم میز با زبان c رو بذارید من بعد از عید باید تحویل بدم

• مریم
۲ خرداد ۱۳۸۶، ساعت ۱۷:۲۰

salam age momkene barnameye baziye sade dar c++c baram befrestin va barnameye jame do adad bozorg va zarb va tafrigh. mamnon misham

• ali
۴ خرداد ۱۳۸۶، ساعت ۱۰:۱۹

class بازی گرافیکی تخته نرد در لینوکس

• بيتا
۴ خرداد ۱۳۸۶، ساعت ۱۲:۲۰

سلام

من برنامه تابع فراكتال را به زبان c++ميخواستم لطفا برايم بنويسيد

• علی گلشن
۵ خرداد ۱۳۸۶، ساعت ۱۷:۵۷

سلام

لطف کنید هر چه زودتر سورس این برنامه را تا سه شنبه برایم بفرستید.واقعا احتیاج دارم.

کلاسی بنویسید که یک چند جمله ای با ویزگی های زیر را پیاده سازی کند:

افزودن جمله جدید

حذف یک جمله از درجه مشخص

محاسبه مقدار چند جمله ای به ازای x مشخص

تعیین درجه چند جمله ای

نمایش چند جمله ای

توجه : چند جمله ای حداکثر از درجه 1000 می باشد.                    p (x) =ax^n+...+ax^2+ax+a

• sara
۵ خرداد ۱۳۸۶، ساعت ۲۱:۲۰

سلام

لطفاً برنامه اعداد مختلط را به طور کامل در سایت قرار بدید چون با توضیحات بالا من نتونستم آن را تا حد اجرا برسانم . لطف کنید اطلاعاتی هم درباره گرافهای همبند و کامل در سایت قرار بدید ( با زبان سی شارپ )

• مهدی
۸ خرداد ۱۳۸۶، ساعت ۲۳:۵۲

سلام

التماس میکن تورو جون هر کی دوست داری خواهش میکنم

لطف کنید هر چه زودتر سورس این برنامه را تا سه شنبه برایم بفرستید.واقعا احتیاج دارم.

کلاسی بنویسید که یک چند جمله ای با ویزگی های زیر را پیاده سازی کند:

افزودن جمله جدید

حذف یک جمله از درجه مشخص

محاسبه مقدار چند جمله ای به ازای x مشخص

تعیین درجه چند جمله ای

نمایش چند جمله ای

توجه : چند جمله ای حداکثر از درجه 1000 می باشد. p (x) =ax^n+...+ax^2+ax+a

• مهدی
۸ خرداد ۱۳۸۶، ساعت ۲۳:۵۵

سلام

التماس میکن تورو جون هر کی دوست داری خواهش میکنم

لطف کنید هر چه زودتر سورس این برنامه را تا چهار شنبه ساعت 22 برایم بفرستید.واقعا احتیاج دارم.

کلاسی بنویسید که یک چند جمله ای با ویزگی های زیر را پیاده سازی کند:

افزودن جمله جدید

حذف یک جمله از درجه مشخص

محاسبه مقدار چند جمله ای به ازای x مشخص

تعیین درجه چند جمله ای

نمایش چند جمله ای

توجه : چند جمله ای حداکثر از درجه 1000 می باشد. p (x) =ax^n+...+ax^2+ax+a

• علی گلشن
۹ خرداد ۱۳۸۶، ساعت ۰۷:۰۲

سلام

من دانشجوی سال آخر کامپیوتر هستم اما نتوانستم مساله چند جمله ای را حل کنم ولی دیگه لازم نیست استاد دیروز مساله چند جمله ای را حل کردند.با این حال می خواستم اگه می شه کتاب جامع خوب معرفی کنید. چون با برنامه نوشتن مشکل دارم.

باز هم از زحمات شما متشکرم.

• شادی
۱۳ خرداد ۱۳۸۶، ساعت ۱۲:۵۱

سلام خسته نباشید چندتا پیشنهاد براتون دارم

اگه ممکنه بگین بچه هایی که برنامه می خوان میلشونم بدن شاید ما تونستیم کمکشون کنیم.

مثلا برنامه رکورد دانشجوها رو (یکی می خواست)من نوشته بودم کلی هم ازش نمره گرفتم.

برنامه هاتونم اگه زیر هم ننویسین یا رنگی بنویسین جذاب تر میشه.

مسعود اقدسی‌فام
۱۳ خرداد ۱۳۸۶، ساعت ۱۲:۵۷

سلام شادی خانوم

ایمیل این دوستان در اختیار ما هست. اما نیت این طور کمکها رو نداریم.

• امير گو هري
۱۶ خرداد ۱۳۸۶، ساعت ۱۴:۱۲

با اين سايت بدرد نخورتون

حالمو گرفتين اطلاعاتش بدرد نمي خوره

• mahla
۱۶ خرداد ۱۳۸۶، ساعت ۲۰:۵۹

اگر امکانش هست سورس بازی دوره گرد یا انسان و هدف را می خواهم اگر می شه کمکم کنید

• aseman
۱۸ خرداد ۱۳۸۶، ساعت ۱۷:۲۲

salam aghaye aghdasi fam age mishe komakam konid ta barnameye (zarbe azdade bozorg ro benevisam)

goya khodetoon ghablan in karo kardin

thanks

tazevared

• saeed
۱۹ خرداد ۱۳۸۶، ساعت ۲۲:۰۹

در مورد يك سوييچ شبكه به من پروژه اي داده شده كه نتوانستم آن را پيدا كنم

در مورد sfm )switch fabric module)

• اصغر
۱۹ خرداد ۱۳۸۶، ساعت ۲۳:۲۱

مطالبی در مورد مقایسه شی گرایی در #c و java میخواستم

• بهزاد
۲۰ خرداد ۱۳۸۶، ساعت ۱۴:۳۲

التماس میکن تورو جون هر کی دوست داری خواهش میکنم

لطف کنید هر چه زودتر سورس این برنامه را تا سه شنبه برایم بفرستید.واقعا احتیاج دارم.

کلاسی بنویسید که یک چند جمله ای با ویزگی های زیر را پیاده سازی کند:

افزودن جمله جدید

حذف یک جمله از درجه مشخص

محاسبه مقدار چند جمله ای به ازای x مشخص

تعیین درجه چند جمله ای

نمایش چند جمله ای

توجه : چند جمله ای حداکثر از درجه 1000 می باشد. p (x) =ax^n+...+ax^2+ax+a

• aseman
۲۶ خرداد ۱۳۸۶، ساعت ۱۲:۳۱

میشه برنامه ضری اعداد بزرگ  برام بفرستید

• Molly
۲۶ خرداد ۱۳۸۶، ساعت ۱۵:۳۰

It is healthy, I shall come on your site more often, thank.

• kiyanoosh
۲۹ خرداد ۱۳۸۶، ساعت ۲۲:۵۴

salam

man daram ye barname ba file ha dar c++ minevisam ke zamani ke avalin kalameye har khat ro dar file khundam hala nemikham baghie khat ro bekhunam va mikham beram sare khate badi che juri bayad beramsare khate badi.(mamnun misham age harche saritar javab bedid)

• mani
۲ تیر ۱۳۸۶، ساعت ۱۷:۴۱

من همه کدهای بالا را دارم هر کس خواست به من میل بزند

• maryam
۱۲ تیر ۱۳۸۶، ساعت ۱۲:۲۰

salam

man ye barname mikham ke chahar amale asli e adade mokhtaleto ba estefade az overloading va class friend anjam bede.

mamnoon misham age komakam konid

• maryam
۱۲ تیر ۱۳۸۶، ساعت ۱۲:۲۴

سلام

من یک برنامه می خواستم که 4 عمل اصلی را برای اعداد مختلط توسط overloading و با استفاده از کلاس friend  انجام بده.

پیشاپیش از لطف شما کمال تشکر را دارم.

maryamsabahi60@yahoo.com

• ali
۱۲ تیر ۱۳۸۶، ساعت ۲۰:۴۷

man link hayi baraye downloud barnamehaye jadid ro be male man addresaro beferestid felan bye

• sina
۱۵ تیر ۱۳۸۶، ساعت ۱۶:۰۶

با عرض خسته نباشید

در مورد نوشتن برنامه تلفن گویا به c#.net  

یک مقاله و راه اندازی آنمی تونید برام ایمیل کنید.

                         thanks

• saed
۲۱ شهریور ۱۳۸۶، ساعت ۱۷:۰۴

سلام دوستان

اگر ممکنه من سورس برنامه ضرب دو جند جمله ای را درهم و سپس بدست آوردن یک جمله را میخواهم .

• mohammad
۶ مهر ۱۳۸۶، ساعت ۲۱:۱۱

سلا م مطالباتان آلی بود

• محمد
۶ مهر ۱۳۸۶، ساعت ۲۱:۲۲

سلام

اگر می شود درباره save  توضیح دهید  در برنامه  برنامه ویژوال بیسیک  6.0

• یاس
۱۵ مهر ۱۳۸۶، ساعت ۲۰:۵۸

سلام. مطالباتون خوب بود.

• مهدی
۱۹ مهر ۱۳۸۶، ساعت ۰۰:۱۴

با تشکر فراوان از مطالبی که در اختیار دوستان گذاشته اید.

• رضا
۳ آبان ۱۳۸۶، ساعت ۱۹:۳۴

از مطالبتان خیلی استفاده کردم ولی کاش بیشتر بود.

• سرور
۸ آبان ۱۳۸۶، ساعت ۲۲:۳۴

میخواستم ببینم اینجا کسی می تونه یه برنامه مربوط به ساعت آنالوگ در گرافیک کامپیوتری شامل عقربه های ساعت شمار, دقیقه شمار و ثانیه شمار و نیز کلیه خطوط مربوط به دقیقه و ثانیه برام  بنویسیه یا لااقل تا حدی راهنمایی کنه(زبان مورد نظر c می باشد) اگر کمکم کنید ممنون می شم .ضمنآ نیاز فوری فوری فوری فوری

• سمانه
۲۴ آبان ۱۳۸۶، ساعت ۲۰:۲۴

به نام او سلام به همه دوستان

من مي خواستم بدونم كسي هست كه تا حالا مسابقه acmشركت كرده باشه چند تا سوال داشتم دوست دارم اگه ميشه به ما (گروهمون) كمك كنيد

• سمیه عزیزی
۲۷ آذر ۱۳۸۶، ساعت ۲۰:۳۶

با سلا م وخسته نباشید  

تبریک عرض می کنم خدمت شما مهندسین محترم  به  خاطر وبلاگ خوبی که اریه داده اید

جناب آقای اقدسی فام بنده  دانشجوی کامپیوتر هستم  استاد درس طراحی الگوریتم ما تعدادی  الگوریتم به ما داده اند حل کنیم که متاسفا نه بنده نتوانستم  از عهده اش  بر بیایم می خواستم از  شما خواهش کنم اگر امکان داشته باشد من را یاری  بفر مائید.

1:الگوریتم آسمان خراش ها (تمرین کتاب قلی زاده)

2:الگوریتم تورنمت بازی

3:الگوریتم ضرب چند جمله ای

با کمال تشکر منتظر پیغامتان می باشم

بدرود وموفق باشید.

• ليلا
۳۰ آذر ۱۳۸۶، ساعت ۲۲:۲۰

ضمن خسته نباشيد به شما عزيزان. من يه سري كتاب الكترونيكي دارم ميخوام براتون بفرستم . راهنماييم كنيد.

• حمید رضا
۱۸ دی ۱۳۸۶، ساعت ۱۴:۳۵

من یه برنامه  میخواستم هزینه اش هم میدم اگه تا روز جمعه 21 دی 86 به دستم برسه

برنامه تورنمنت بازیها فقط  تا اون تاریخ

• بهاره
۱۷ بهمن ۱۳۸۶، ساعت ۱۶:۴۰

سلام آقا مسعود من مي خواستم بدونم آيا در c يا c++ دستوري براي ورود كاراكتر هست كه بشه با اون بدون توقف از كاربر كاراكتر گرفت ؟

مثلا getch بعد از اينكه از كاربر دكمه گرفت ادامه مي ده من مي خوام روال كار ادامه پدا كنه در عين حال ورودي منتظر ورود كاراكتر باشه و جايي ذخيره بكنه اين كاراكتر رو تا روش كار انجام بدم

تو رو خدا كمكم كنيد پروژه ام بسته به اينه باي

مسعود اقدسی‌فام
۱۷ بهمن ۱۳۸۶، ساعت ۲۳:۴۴

بله بهاره خانوم، از تابع kbhit استفاده کنید.

• Milad
۸ فروردین ۱۳۸۷، ساعت ۱۳:۳۷

Salam Tashakor az in saite khoobetoon !!!

• اریا
۷ اردیبهشت ۱۳۸۷، ساعت ۰۲:۱۷

برنامه که اعداد 100 رقمی را در هم ضرب کند در ویپوال بیسیک

• reza
۱۹ اردیبهشت ۱۳۸۷، ساعت ۰۶:۱۶

اگر امکانش هست تابعی برای بدست آوردن انتگرال در ++C برای من ارسال کنید و همچنین کاربرد تابع dellay.

با تشکر

• mona
۳ خرداد ۱۳۸۷، ساعت ۱۱:۳۹

khaste nabashin

mamnon az amozesheton

in matlabi ke neveshtin

man amalgarhaye kochektar va bozorgtaresh ro ham mikham

inke << va >> hast

ina hamonan????

hamon > va< hastan? ya fargh mikone age rahnamee konid mamnon misham

مسعود اقدسی‌فام
۳ خرداد ۱۳۸۷، ساعت ۲۰:۱۲

نه خیر مونا خانم، اینها با علامت بزرگتر و کوچکتر تفاوت اساسی دارن!

• saghar
۲۴ خرداد ۱۳۸۷، ساعت ۲۲:۰۸

salamk haste nabashid

man ye soal dashtam dar morede ers bari ke gofte moadele 2 daneshjoro dar maghtae kardani va karshenasi mohasebe daneshjo kelase mabna va kardani va karshenasi kelase moshtagh shode bashan va tabi dashte bashan be name mashrot shodan ke az tabe majazi estefade she

man nemidonam moadelaro bayad koja moarefi konam to mabna?

ya to tak tak moshtaghs hodeha?

bad bayad bare har kodom az daneshjoha yeseri etelaat nevehste she??

mishe lotf konin rahnamee m konin

• saghar
۲۷ خرداد ۱۳۸۷، ساعت ۱۰:۰۰

plz javabe mano bedin farda emtehan daram

• asal
۱۷ تیر ۱۳۸۷، ساعت ۰۱:۱۰

با سلام مجدد!ممنون كه به سوالم پاسخ داديد !لطف كرديد به سوال من نگاه نكرديد!!لطف كنيد جوابمو بديد!با عرض سلام وخسته نباشيد خدمت شما. لطف كنيد اين برنامه مربع جادويي در c++ را كه با كلاس ها است و به صورت گرافيكي نمايش داده مي شود برايم ارسال كنيد.خيلي مهم وحياتي است.تا 7تير بيشتر مهلت ندارم.متشكرم .نهايتا لطف كنيد راهنمايي كنيد.ممنون

• asal
۱۷ تیر ۱۳۸۷، ساعت ۰۱:۱۴

با عرض سلام وخسته نباشيد خدمت شما. لطف كنيد اين برنامه مربع جادويي در c++ را كه با كلاس ها است و به صورت گرافيكي نمايش داده مي شود برايم ارسال كنيد.خيلي مهم وحياتي است.تا 20تير بيشتر مهلت ندارم.متشكرم .نهايتا لطف كنيد راهنمايي كنيد.ممنون

مسعود اقدسی‌فام
۱۷ تیر ۱۳۸۷، ساعت ۰۹:۳۹

عسل خانم شرمنده، این امکان وجود نداره.

• ali
۲۸ اردیبهشت ۱۳۸۸، ساعت ۱۲:۴۹

سلام من نياز فوري به برنامه كامل كلاس چند جمله دارم كه عمليات +-/و ساده كردن چند جمله دارم همراه برنامه اش كه قابل اجرا بر رو ي سيستم باسد اگه امكانش هست برام ايميل كنيد.

مسعود اقدسی‌فام
۲۸ اردیبهشت ۱۳۸۸، ساعت ۱۳:۲۲

سلام علی جان

اگر قوانین ارسال پیام رو خونده بودید متوجه می شدید که امکان وجود نداره.

ممنون از حضورتون.

• maryam
۲۸ اردیبهشت ۱۳۸۸، ساعت ۱۷:۵۰

salam khaste nabashid, man ye barname be zabane java mikhastam , farghi nemikone ke darmorede chi bashe . faghat age zahmati nist lotf konid tozihatesham hamrash bezarid.chon man hichi az java nemidonam.man ta chand rooze dg niyazesh daram. age zahmatesho bekeshid mamnoneton misham

• مرتضی
۱۰ آذر ۱۳۸۸، ساعت ۱۸:۴۷

باسلام.

ضمن تبریک به داشتن چنین وب سایت عالی و پرباری.....

یه سوال دارم:

من دارم یه برنامه مینویسم که شبیه برنامه های نوشته شده با ویژوال هستش، تو این برنامه کلاس های خیلی زیادی نوشتم، حالا میخوام یه کلاس convert بنویسم که همه کلاس ها بتونن بدون ساختن یک شئ ازاون،بتونن ازش استفاده کنن.یعنی هر کلاس جدیدی هم که تعریف میکنم،بتونه بدون ساختن شئی از اون ازش استفاده کنه.چون میخوام این کلاس بین همه کلاس ها مشترک باشه.چطور؟؟

راستی من اصلا برنامه نویسی استاتیک بلد نیستم.

ممنوووون.

۱۰ آذر ۱۳۸۸، ساعت ۲۰:۰۶
• مسعود اقدسی‌فام

سلام

ممنون از لطفت.

شما می خوای با ++C برنامه بنویسی؟ یعنی می خوای همه کلاسهایی که داری بتونن از محتویات این کلاس به صورت مستقیم استفاده کنن؟

• نجمه
۲۲ خرداد ۱۳۸۹، ساعت ۱۲:۰۷

باسلام

ميشه در سايتتون در مورد توابع عضو استاتيك مطالبي را بيان كنيد.اگر مطالب جنبه كنكوري داشته باشند بهتر است.ممنون

• alireza
۲۹ شهریور ۱۳۸۹، ساعت ۱۲:۰۹

سلام دوست عزیز

امیدوارم که در کمال صحت و سلامتی باشی

آق من تو یه شرکت کار میکنم که قسمت عمدهکارش برنامه سازی هست

اما من تو فیلد سخت افزار و راه اندازی سیستم های تولیدی کار میکنم

خیلی  دوست دارم تو فیلد سی پلاس پلاس  وارد بشم

اما  نشده

می خوام کمکم کنی و جزوه خوب و روان و قدم به قذم اگه داری بهم بدی

ذوستان همکار کتاب مرجع لاتین  زیاد دادن اما اینها سنگین هست و به درد آدم مبتدی نمی خوره

ممنون

• زهرا
۹ خرداد ۱۳۹۱، ساعت ۱۲:۳۴

با سلام من دانشجوی کارشناسی کامپیوتر هستم اگر می توانید در حل  ونوشتن این برنامه به من کمک کنید

اشیا زیر را در نظر بگیرید ستسته مراتبی از کلاسها را برای انها به همراه مجموعه مناسبی از توابع با وراثتی برای محاسبه حجم سطح و محیط (به شکل مناسب) توسعه دهید:جعبه - دایره- مربع- مثلث- چند ضلعی-خط- نقطه- شئ-چهار ضلعی - کره -مربع و چهار ضلعی - متواضی الاظلاع- شش ضلعی - پنج ضلعی - چهار ضلعی -

با تشکر

• زهرا
۹ خرداد ۱۳۹۱، ساعت ۱۲:۴۰

البته فقط به زبان c++

خط اول سوال :کلمه درست( سلسله مراتب ) است

مسعود اقدسی‌فام
۱۱ خرداد ۱۳۹۱، ساعت ۱۵:۰۷

زهرا خانم چه کمکی از دست من بر می‌یاد؟

• مهدی
۱ مرداد ۱۳۹۱، ساعت ۱۱:۵۳

070707070707

جرا من هرچی کتاب میخونم ++c رو یاد نمیگیرم/

070707070707

آخه چرا

• لطفی
۱۹ مرداد ۱۳۹۱، ساعت ۱۸:۲۳

سلام،اگه لطف جواب س<ال منو بدید ممنون میشم.

ازطریق برنامه سی++ وکلاس دوست(friend)

برنامه ای بنویسید که تاریخ تولد شخصی را با تاریخ امروز مقایسه کند اگر امروز تولدش بود پیام تبریک چاپ کند.

ممنونم.

• موسی
۱۹ مرداد ۱۳۹۱، ساعت ۱۸:۳۴

جواب سوالی که فرستادیم رو از کجا باید  پیدا کنیم.

۱۹ مرداد ۱۳۹۱، ساعت ۲۱:۳۲
• مسعود اقدسی‌فام

سوالی پرسیده نشده که جواب داده بشه. به نظر درخواست برنامه می‌یاد که اگه قسمت بالای بخش ارسال پیام رو مطالعه کرده باشید، چنین درخواستی جواب نداره.

• mohmmad
۱ بهمن ۱۳۹۱، ساعت ۲۱:۳۴

0202020202020202

کمک کمک کمک

چطوری میتونم درج در جریان را با استفاده از تابع عضو سربارگذاری کنم.

• سیاوش
۲۴ آبان ۱۳۹۲، ساعت ۱۹:۵۸

با سلام و خسته نباشید

کد سورسی در c++ می خواستم که تعداد روز بین دو تاریخ شمسی رو حساب کنه و سال کبیسه و تعداد روزهای بعضی ماه ها (30و31روزه بودن) رو مشخص کنه .

اگه میشه پاسخ بدید چون استادمون درس نمیده و میاد سر کلاس و میگه فلان برنامه رو بنویسید و ما هم خوب یاد نمی گیریم .

خدا اجرتون بده

06

• F
۲۵ اسفند ۱۳۹۵، ساعت ۱۱:۲۰

سلام ببخشید من دنبال تمام توابع مربوط ب رشته هاباتوضیح ومثال میگردم البته به جز SizeوLength...ممنون

۲۷ اسفند ۱۳۹۵، ساعت ۱۴:۵۶
• مسعود اقدسی‌فام

سلام

به زودی در این مورد هم نوشته‌ای اضافه می‌شه.

• هانی شمس
۸ اردیبهشت ۱۳۹۷، ساعت ۱۰:۳۸

مرسی بابت مطلب خوبی که گذاشتید یه سوالی داشتم دلیل اینکه دو نسخه از عملگر درج در جریان » داخل کلاس ostream وجود داره چی هستش؟

اگر دقت کنید یکیش به صورت تابع عضو کلاس ostream هستش اون یکی غیر عضو هستش در صورتی که جفتش رو میشد به صورت تابع عضو پیاده سازی کرد

member:

http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

non-member:

http://www.cplusplus.com/reference/ostream/ostream/operator-free/

یعنی در حقیقت سوالم این هست بر چه اساس سازنده های کتابخانه استاندارد تصمیم گرفتند که برای یک سری از انواع مثل کاراکتر عملگر >> را به صورت غیر عضو پیاده سازی کنند و برای سایر انواع عملگر >> به صورت عضو کلاس تعریف شده

۱۴ اردیبهشت ۱۳۹۷، ساعت ۱۸:۴۵
• مسعود اقدسی‌فام

سلام

خیلی ممنون.

اولی مربوط به کلاس ostream هست. اما دومی std::operator. در واقع دو جای متفاوت هستن این تعاریف که دومی یک شی از نوع ostream هم دریافت می‌کنه. این همون مفهوم تابع دوست هست. ما نمی‌تونیم تعریف داخل کلاس رو عوض کنیم. اما می‌تونیم تابع دوست دلخواهی بنویسیم که مورد دوم شما یه نمونه هست داخل فضای نام std.

• محمد جواد
۱۴ اردیبهشت ۱۳۹۷، ساعت ۱۴:۰۹

سلام علیکم

یک سوال در مورد این نکته ی پایانی

(نکته‌ی مهم: برای سربارگذاری عملگرهای جریان (یعنی >> و <<) چاره‌ای ندارید جز این که از توابع دوست استفاده کنید (چرا؟).)

چرا باید یک چنین چیزی باشد؟؟؟؟؟؟

با تشکر

۱۴ اردیبهشت ۱۳۹۷، ساعت ۱۸:۳۶
• مسعود اقدسی‌فام

سلام

چون در این حالت شی سمت چپ از نوع متعیرهای جریان (مثل cin و cout) هست و شی‌ای از نوع کلاس خودمون نیست.