✤  توابع دوست کلاس در ++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 هم برای کار با اعداد مختلط توابع و کلاس‌هایی دارند که همه نیازها را برآورده می‌کنند.

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

مسعود اقدسی فام

مسعود اقدسی فام هستم.

دانش‌آموخته‌ی علوم کامپیوتر و فعال حوزه‌های علم داده و یادگیری ماشین؛ علاقه‌مند به یاد دادن و یاد گرفتن :)

algs.ir/spjh1gp     اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram
نوشته‌ها از این دست
       ✦   هدر فایل bits/stdc++.h
آخرین نوشته‌ها
       ✦   الگوریتم آنلاین
نوشته‌های پرمخاطب
  • 1
  • 2
  • 3
  • 4
  • 5

نام: *  

پست الکترونیک (محرمانه):

متن پیام: *  

01 02 06 07 08 09 10 11 12 13 14

• 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) هست و شی‌ای از نوع کلاس خودمون نیست.