PDA

View Full Version : سوال: ایا استراکچر و کلاس ها دقیقا یکی هستند؟؟؟؟؟؟؟؟



motherboard
یک شنبه 02 شهریور 1393, 20:14 عصر
سلام.استراکچر ها و کلاس ها شباهت هایی رو نسبت به یکدیگر دارند.ولی این کدی که الان شما در زیر می بینید با استراکچر درست شده اما تنها فرقی که با کلاس ها داره اینه که به جای class X نوشته struct X !!!!!!!!!!! الان حقیقتا با این اوصاف ایا استراکچر با کلاس فرق داره؟؟؟؟؟؟؟؟؟ من که هیچ فرقی رو بین class ویا struct در کد زیر نمی بینم.!!!!!!!!!!


#include <iostream>
using namespace std;

struct X {
private:
int a;
public:
void Set_a(int a) {

// The 'this' pointer is used to retrieve 'xobj.a'
// hidden by the automatic variable 'a'
this->a = a;
}
void Print_a() { cout << "a = " << a << endl; }
};

int main() {
X xobj;
int a=5;
xobj.Set_a(a);
xobj.Print_a();
}

motherboard
یک شنبه 02 شهریور 1393, 20:33 عصر
به نظرم ما یک مشکل بزرگ داریم که یک کتاب خوب ++C رو از اول تا آخر نمی خونیم و روش کار کنیم. بعد اگر جایی مشکل داشتیم بیایم بپرسیم.
پس این انجمن برای چیست؟ اگه قرار باشه که تمام مشکلات رو با خوندن کتاب رفع کرد پس از فردا هر چی فروم خارجی و یا انگلیسی هست رو جمع کنیم دیگه!!!! من هم استراکچر ها رو می دونم چیه و هم کلاس ها رو.اما این کدی که تحت عنوان struct اومد با کلاس ها مو نمیزنه.بالاخره سواله دیگه.اگه برای شما خیلی ساده است برای من ساده نیست.اگر لطف بفرمایید من رو راهنمایی کنید.

ciavosh
یک شنبه 02 شهریور 1393, 20:42 عصر
پس این انجمن برای چیست؟ اگه قرار باشه که تمام مشکلات رو با خوندن کتاب رفع کرد پس از فردا هر چی فروم خارجی و یا انگلیسی هست رو جمع کنیم دیگه!!!! من هم استراکچر ها رو می دونم چیه و هم کلاس ها رو.اما این کدی که تحت عنوان struct اومد با کلاس ها مو نمیزنه.بالاخره سواله دیگه.اگه برای شما خیلی ساده است برای من ساده نیست.اگر لطف بفرمایید من رو راهنمایی کنید.

من کلی میگم و منظورم به شخص خاصی نیست. و خودم هم این کار رو کردم. چون تنبلیم میاد از توی یک کتاب موضوع را پیدا کنم. خب مسلماً خیلی راحت تره بقیه رو وادار کنم به جای من بگردن. اکثر سوالاتی که من میبینم با یک سرچ ساده تو گوگل پاسخش پیدا میشه. این درست نیست که من این سرچ رو بندازم گردن بقیه.
به نظر من کسی که اصولی داره ++C رو یاد میگیره باید بدونه struct و class فرقی با هم ندارن به جز این که در struct عضوها در صورت عدم تمییز public هستند.

motherboard
یک شنبه 02 شهریور 1393, 20:48 عصر
من کلی میگم و منظورم به شخص خاصی نیست. و خودم هم این کار رو کردم. چون تنبلیم میاد از توی یک کتاب موضوع را پیدا کنم. خب مسلماً خیلی راحت تره بقیه رو وادار کنم به جای من بگردن. اکثر سوالاتی که من میبینم با یک سرچ ساده تو گوگل پاسخش پیدا میشه. این درست نیست که من این سرچ رو بندازم گردن بقیه.
به نظر من کسی که اصولی داره ++C رو یاد میگیره باید بدونه struct و class فرقی با هم ندارن به جز این که در struct عضوها در صورت عدم تمییز public هستند.
خب این عبارت قرمز رنگی رو که گفتی زودتر بگو!!! یعنی اون طور که من از سخنان شما برداشت کردم تو کلاس ها در صورت عدم تمییز عضو ها private هست ولی تو استراکچر در صورت عدم تمییز عضو ها به صورت public هست. ایا منظور شما این بود؟ سوال بعدی اینه که ایا تو استراکچر ارث بری هم وجود داره؟ با تشکر.

ciavosh
یک شنبه 02 شهریور 1393, 20:59 عصر
خب این عبارت قرمز رنگی رو که گفتی زودتر بگو!!! یعنی اون طور که من از سخنان شما برداشت کردم تو کلاس ها در صورت عدم تمییز عضو ها private هست ولی تو استراکچر در صورت عدم تمییز عضو ها به صورت public هست. ایا منظور شما این بود؟ سوال بعدی اینه که ایا تو استراکچر ارث بری هم وجود داره؟ با تشکر.

ضمناً بعضی موارد رو میشه به راحتی و در عرض چند ثانیه امتحان کرد...

omid_kma
یک شنبه 02 شهریور 1393, 21:00 عصر
تفوت struct با کلاس (http://www.7khatcode.com/8/%D9%81%D8%B1%D9%82-struct-%D8%A8%D8%A7-class?show=8#q8)

motherboard
سه شنبه 04 شهریور 1393, 01:07 صبح
اگه استراکچر با کلاس تفاوت خاصی رو نداره پس فرق c با ++c چیه؟؟؟؟

omid_kma
سه شنبه 04 شهریور 1393, 01:45 صبح
اگه استراکچر با کلاس تفاوت خاصی رو نداره پس فرق c با ++c چیه؟؟؟؟
struct ای که توی C هست با struct سی پلاس پلاس متفاوته اون قابلیت ارث بری تعریف سازنده و ... رو نداره

کامبیز اسدزاده
سه شنبه 04 شهریور 1393, 09:38 صبح
در C++ تنها تفاوتی که در struct نسبت به class میشه دید اینه که اعضای موجود در struct به صورت پیشفرض دارای دسترسی public هستند در حالی که دسترسی اعضا به صورت پیشفرض در class ها به صورت private هستش و این تنها تفاوت بین struct و class ها در C++ میباشد.

C3phalex1n_0x
سه شنبه 04 شهریور 1393, 12:24 عصر
کلاس
- قابلیت کپسوله سازی کردن داده ها را دارد.
- قابلیت جداسازی پیاده سازی از تعریف را دارد.
- شامل Constructor و Destructor می شود.
- کلاس ها قابلیت ایجاد شی را به شما می دهد.
- می توانید از ارث بری برای بسط دادن ان استفاده کنید.
- و....

ساختار ها
- موارد بالا رو نداره. :)

omid_kma
سه شنبه 04 شهریور 1393, 13:07 عصر
کلاس
- قابلیت کپسوله سازی کردن داده ها را دارد.
- قابلیت جداسازی پیاده سازی از تعریف را دارد.
- شامل Constructor و Destructor می شود.
- کلاس ها قابلیت ایجاد شی را به شما می دهد.
- می توانید از ارث بری برای بسط دادن ان استفاده کنید.
- و....

ساختار ها
- موارد بالا رو نداره. :)
اولا اگر منظورتون تفاوت struct با کلاس توی ++C هستش که کاملا اشتباهه توی پست های بالا هم n بار گفته شده !
اگر منظورتون تفاوت کلاس توی ++C با struct توی C هست که بازم اشتباه هستش ! چون struct در C هم قابلیت ایجاد شی رو میده .

C3phalex1n_0x
سه شنبه 04 شهریور 1393, 23:44 عصر
اولا اگر منظورتون تفاوت struct با کلاس توی ++C هستش که کاملا اشتباهه توی پست های بالا هم n بار گفته شده !
اگر منظورتون تفاوت کلاس توی ++C با struct توی C هست که بازم اشتباه هستش ! چون struct در C هم قابلیت ایجاد شی رو میده .

بحث در مورد شی گرایی، به نظر من باید ریزتر شود. اول اینکه اصلا شی چیست؟! اگر ما به شی بدین شکل نگاه کنیم که شی قطعه داده و اطلاعاتی است که در حافظه فضای می گیرد! بله با سی هم می توان شی گرا کد نویسی کرد. اما باز هم از نظر من که به تازگی وارد مبحث برنامه نویسی C/C++ شده است. اگر به شی بر مبنای ایجاد لایه های انتزاعی و تجریدی نگاه کنیم، سی نمی تواند ویژگی هایی که در C++ ارائه شده است را به شخص کاربر خودش ارائه دهد. یا به عبارتی استراکچر نمی تواند کلیات توانایی های کلاس را به شخص برنامه نویس ارائه دهد.

مرسی