تالار گفتمان مانشت
توضیح این کد - نسخه‌ی قابل چاپ

توضیح این کد - mehdiba3 - 07 خرداد ۱۳۹۱ ۰۹:۳۶ ب.ظ

#include<iostream.h>
#include<conio.h>
#include<string.h>
class figure {
protected:
double x,y;
public:
void set_dim(double i, double j=0){
x=i;
y=j;
}
virtual void show_area(){
cout<<"no area defined";
cout<<"for this class.\n";
}
};
class tringle :public figure {
public:
void show_area(){
cout<<"tringle with height";
cout<<x<<"and base"<<y;
cout<<"has an are ";
cout<<x * 0.5 *y<<"\n";
}};
class square : public figure{
public:
void show_area(){
cout<<"sqoure with demensoin";
cout<<x<<"x"<<y;
cout<<"has an area of";
cout<<x * y<<"\n";
}
};
class circle :public figure{
public:
void show_area(){
cout<<"circle with radios";
cout<<x;
cout<<"has an area of";
cout<<3.14 * x * x;
}
};
main(void)
{
figure *p;
tringle t;
square s;
circle c;
p=&t;
p->set_dim(10.0, 5.0);
p->show_area();
p=&s;
p->set_dim(10.0, 5.0);
p->show_area();
p=&c;
p->set_dim(9.0);
p->show_area();
getch();
return 0;
}

میشه یک مسلمون این کد رو برام توضیح بده؟ - a.hooshmand - 07 خرداد ۱۳۹۱ ۰۹:۵۴ ب.ظ


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


میشه یک مسلمون این کد رو برام توضیح بده؟ - parsaNA - 07 خرداد ۱۳۹۱ ۰۹:۵۵ ب.ظ

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

تابع مجازی هم غالبا مشابه سربارگزاریه ( overloading ) ، به این صورته که این تابع با کلمه کلیدی virtual تو کلاس اصلی تعریف می شه و اغلب اوقات برای اون کار خاصی در نظر گرفته نمی شه . بعد کلاس های مشتق شده همین تابع را با همین نام منتها بدون کلمه کلیدی virtual با توجه به نیازهای خود دوباره تعریف می کنند . مثل سربارگزاری

بحث اشاره گر به کلاس هم باعث میشه که دیگه برای دسترسی به اعضای کلاس از عملگر <- استفاده بشه . ضمن برقراری تموم قوانین اشاره گر ها برای کلاس .

RE: میشه یک مسلمون این کد رو برام توضیح بده؟ - mehdiba3 - 08 خرداد ۱۳۹۱ ۰۸:۴۵ ق.ظ

(۰۷ خرداد ۱۳۹۱ ۰۹:۵۵ ب.ظ)parsaNA نوشته شده توسط:  برنامه نکته خاصی نداره . داره کاربرد وراثت و توابع مجازی ( virtual ) رو نشون میده . اول کلاس اصلی شکل ( figure ) رو تعریف می کنه و بعد کلاسهای دایره و مثلث و مربع از اون کلاس اصلی ارث می برن .

تابع مجازی هم غالبا مشابه سربارگزاریه ( overloading ) ، به این صورته که این تابع با کلمه کلیدی virtual تو کلاس اصلی تعریف می شه و اغلب اوقات برای اون کار خاصی در نظر گرفته نمی شه . بعد کلاس های مشتق شده همین تابع را با همین نام منتها بدون کلمه کلیدی virtual با توجه به نیازهای خود دوباره تعریف می کنند . مثل سربارگزاری

بحث اشاره گر به کلاس هم باعث میشه که دیگه برای دسترسی به اعضای کلاس از عملگر <- استفاده بشه . ضمن برقراری تموم قوانین اشاره گر ها برای کلاس .

ممنون از راهنماییت دوست عزیز