کاربرد ارث بری چند گانه در C++ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کاربرد ارث بری چند گانه در C++

+1 امتیاز
آقا این که c++ می تونه همزمان از 2 تا شی دیگه ارث بری کنه قضیش چیه ؟ بدردیم می خوره ؟ چرا زبون هایی مثل java یا c# این قابلیتو ندارن ؟!
سوال شده آذر 6, 1392  بوسیله ی afshin70 (امتیاز 44)   4 7 12
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade
توجه داشته باشید که ارث بری از کلاس میتونه صورت بگیره و نه شی. شی نمونه واقعی از یک مفهوم هستش. مثلاً من یک نمونه (شی) از کلاس انسان هستم.

2 پاسخ

+1 امتیاز
خصوصیات چند تا کلاس رو کنار هم در کلاس جدید میتونیم داشته باشیم.
پاسخ داده شده آذر 6, 1392 بوسیله ی محمد قدیانی (امتیاز 317)   1 9
ویرایش شده آذر 6, 1392 بوسیله ی r0lex
+3 امتیاز

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

منظور شما "وراثت چندگانه ی کلاس ها" هست. در این نوع وراثت یه کلاس می تونه چند تا کلاس والد داشته باشه...

پیاده سازی چنین وراثتی کار سختی هست و دارای ابهاماتی هست که بعضی زبان ها ترجیح می دن این نوع وراثت رو پیاده سازی نکنن... البته در عوض با یه مفهوم دیگه ای به نام Interface ها یا Protocol ها تا حدی می شه ویژگی هایی از وراثت چندگانه رو ارائه داد... تا جایی که اطلاع دارم در PHP به جای وراثت چندگانه مفهمومی هست به نام Traits class...

یه ابهامی که در وراثت چندگانه وجود داره "مسئله ی لوزی" (The diamond problem) هست که گاهی بهش می گن "لوزی مهلک مرگ" (deadly diamond of death)!

این ابهام وقتی به وجود می آد که دو کلاس B و C از کلاس A به ارث برسن و کلاس D از دو کلاس B و C به ارث برسه و Method ای در کلاس A وجود داشته باشه که B و/یا C اون رو Override کنن و همچنین ‌D اون رو Override نکرده باشه. حالا ابهام این جاست که کدوم ‌Method رو ‌D به ارث می بره؟! اونی که برای B هست رو یا اونی که برای ‌C هست؟! ضمنا Method overriding یعنی یه کلاس فرزند پیاده سازی خاصی رو از Method ای که قبلا در کلاس والدش ارائه شده داشته باشه. 

زبان های مختلف، روش های مختلفی رو برای برخورد با این مشکلات دارن... می تونید در مورد Multiple inheritane تحقیق کنید و اطلاعات بیش تری به دست بیارید...

پاسخ داده شده مرداد 7, 1393 بوسیله ی مسعود لپه‌چی (امتیاز 928)   12 31 50
ویرایش شده شهریور 15, 1393 بوسیله ی مسعود لپه‌چی
...