ورود

View Full Version : تفاوت بین ساختار با کلاس



american_iran2006
دوشنبه 07 اسفند 1385, 18:35 عصر
سلام دوستان ::

چرا در ++c کلاس ها اضافه شده اند و اینقدر بهشون افتخار میشه

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

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

پس دلیل بوجود اومدنه کلاس ها چیه ؟؟ !!!!!!!!!!!!!!!!!111

در صورتی که از نظر شی گرایی مثل ساختار ها می مانند:متفکر:

american_iran2006
پنج شنبه 10 اسفند 1385, 11:42 صبح
کسی نبید به این سوال جواب بده

mo.esmp
پنج شنبه 10 اسفند 1385, 18:11 عصر
دلیل بوجود آمدن کلاسها مشکل یا ضعف در ساختارها نیست. دلیل بوجود آمدن شئی گرایی ضعف در ساختیافتگیه. در برنامه هایی که (بصورت ساختیافته نوشته شده اند) دارای 25000 تا 100000 خط وبالاتر باشند دیگه بهینه سازی و رفع خطاها خیلی مشکل میشه. دلایل زیادی برای بوجود آمدن برنامه نویسی شئی گرایی هست که میتونی با خوندن یک مقاله یا کتاب در مورد شئی گرایی به اهمیت بوجود آمدن کلاسها پی ببری.

someCoder
پنج شنبه 10 اسفند 1385, 18:19 عصر
ساختار ها هم خاصیت شی گرایی دارناشتباه نکن! struct ها در ++C این خواص رو دارند، نه C!

Mamdos
جمعه 11 اسفند 1385, 00:08 صبح
فکر می‌کنم که structها را نمی‌شه در چیزهایی مثل وراثت و چندریختی که از اساسی‌ترین بخش‌های شئ‌گرایی هستند به کار برد؛ هرچند مطمئن نیستم.

american_iran2006
جمعه 11 اسفند 1385, 14:49 عصر
اشتباه نکن! struct ها در ++C این خواص رو دارند، نه C!

من هم در ++c میگم :: اینو میدونم که در c استاندارد این خاصیت توشون نیست

hesam187
سه شنبه 07 فروردین 1386, 11:43 صبح
سلام
بابا این که خیلی تابلو هست
اصلا اونی که میگه ساختار همون کلاس هست کجا میشه توی ساختار یک متد تعریف کرد
اصلا شما می دونین وراثت چیه , یکی از مهمترین اصول شی گرائی که به هیچ وجه نمیشه با ساختار پیاده سازی کرد.
البته من هم اولاش این اشتباه و می کردم ولی با خوندن کتاب شی گرائی بالا خره افتاد
موفق باشید

melomane
سه شنبه 07 فروردین 1386, 11:59 صبح
یکی از مزایای اصلی برنامه نویسی شی گرا قابلیت استفاد ی دوباره از نرم افزار است (software reuse) که توی برنامه نویسی ساخت یافته کمتر این موضوع دیده می شه. علاوه بر این گاهی برای استفاده ی مجدد لازمه تغییراتی توی برنامه داده بشه که معمولا توی برنامه نویسی ساخت یافته این تغییرات کلی هستند و معمولا ترجیح داده میشه که برنامه دوباره نوشته بشه. اما در شی گرایی تغییرات جزئی و راحت تر هستند.
احتمالا خودتون هم باهاش برخورد کردین.یک کلاس می سازین (هر چند خیلی هاش آماده توی اس تی ال هست) مثلا برای آرایه ی دو بعدی(ماتریس) که مثلا همه امکانات رو داره جز ضرب ماتریس ها. حالا هر جا که می بینین به ماتریس نیاز دارین می تونین به راحتی ازش استفاده کنین. یه جورایی همیشگی میشه. حالا بعد از یه مدت می بینین (خودتون یا یک کاربر دیگه ی کلاس) که لازمه دو تا ماتریس با هم ضرب شن. فقط کافیه یک تغییر خیلی کوچیک تو ی کلاس داده بشه.
و این همون استفاده مجدده. همونطور هم که کارشناسا می گن این استفاده مجدد باعث میشه هم کار ساده تر و سریع تر بشه و هم در اثر استفاده تعداد زیادی از افراد به مرور باگ ها و اشکالات احتمالی از کلاس از بین بره

american_iran2006
سه شنبه 07 فروردین 1386, 14:49 عصر
سلام
بابا این که خیلی تابلو هست
:تشویق:
چه جالب ؛ خوب !!!!!!!:کف:


اصلا اونی که میگه ساختار همون کلاس هست کجا میشه توی ساختار یک متد تعریف کرد

هر کاری که در class میشه کرد در ساختار ها هم میشه


اصلا شما می دونین وراثت چیه

نه :اشتباه: ؛ فقط شما می دونید ؛؛ به کسی نگیا ؛ میان می دوزنت:چشمک:


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

خودت امتهان کن ، اگه وقت ندار ی sourc بزارم از وراثت ساختار ها

american_iran2006
سه شنبه 07 فروردین 1386, 14:54 عصر
یکی از مزایای اصلی برنامه نویسی شی گرا قابلیت استفاد ی دوباره از نرم افزار است (software reuse) که توی برنامه نویسی ساخت یافته کمتر این موضوع دیده می شه. علاوه بر این گاهی برای استفاده ی مجدد لازمه تغییراتی توی برنامه داده بشه که معمولا توی برنامه نویسی ساخت یافته این تغییرات کلی هستند و معمولا ترجیح داده میشه که برنامه دوباره نوشته بشه. اما در شی گرایی تغییرات جزئی و راحت تر هستند.
احتمالا خودتون هم باهاش برخورد کردین.یک کلاس می سازین (هر چند خیلی هاش آماده توی اس تی ال هست) مثلا برای آرایه ی دو بعدی(ماتریس) که مثلا همه امکانات رو داره جز ضرب ماتریس ها. حالا هر جا که می بینین به ماتریس نیاز دارین می تونین به راحتی ازش استفاده کنین. یه جورایی همیشگی میشه. حالا بعد از یه مدت می بینین (خودتون یا یک کاربر دیگه ی کلاس) که لازمه دو تا ماتریس با هم ضرب شن. فقط کافیه یک تغییر خیلی کوچیک تو ی کلاس داده بشه.
و این همون استفاده مجدده. همونطور هم که کارشناسا می گن این استفاده مجدد باعث میشه هم کار ساده تر و سریع تر بشه و هم در اثر استفاده تعداد زیادی از افراد به مرور باگ ها و اشکالات احتمالی از کلاس از بین بره

بابت جوابتون ممنون ؛

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

جوابش : نه هستش:: چون می تونی هر چند بار که دلت بخواد استفاده کنی

می تونی توش تابع تعریف کنی

می تونی public و private داشته باشی

یاد تون باشه ؛ ساختار در ++c ؛ کاملا شی گراست

melomane
سه شنبه 07 فروردین 1386, 15:07 عصر
بله می دونم. اول از همه اینکه من فکر کردم شما بیتشر منظورتون ساختار در سی هست نه سی پلاس پلاس که خوب حتما در موردش جواب رو می دونین. نکته دوم اینکه فکر می کنم این نوع ساختار به نوعی بر محور آبجکت هست نه روال.
احتمالا این نکته رو هم می دونین که پیش فرض public و private بودن در کلاس و ساختار فرق می کنه. کلاس تاکید زیادی بر data encapsulation و data hiding داره که یکی از اساس های برنامه نویسی OOP هست.

american_iran2006
سه شنبه 07 فروردین 1386, 15:13 عصر
سلام
بابا این که خیلی تابلو هست
اصلا اونی که میگه ساختار همون کلاس هست کجا میشه توی ساختار یک متد تعریف کرد
اصلا شما می دونین وراثت چیه , یکی از مهمترین اصول شی گرائی که به هیچ وجه نمیشه با ساختار پیاده سازی کرد.

اینم سورس ::

#include<iostream>
#include<conio.h>
using namespace std;
struct p1{
void p2();
};
void p1::p2(){
cout <<"didi mishe";
}
struct p3 :public p1{
};

int main()
{
int b;
p3 a;
a.p2();
b=getch();
return 0;
}

american_iran2006
سه شنبه 07 فروردین 1386, 15:16 عصر
بله می دونم. اول از همه اینکه من فکر کردم شما بیتشر منظورتون ساختار در سی هست نه سی پلاس پلاس که خوب حتما در موردش جواب رو می دونین. نکته دوم اینکه فکر می کنم این نوع ساختار به نوعی بر محور آبجکت هست نه روال.
احتمالا این نکته رو هم می دونین که پیش فرض public و private بودن در کلاس و ساختار فرق می کنه. کلاس تاکید زیادی بر data encapsulation و data hiding داره که یکی از اساس های برنامه نویسی OOP هست.

بله اینو میدونم ::ممنون بابت جوابتون

موفق باشید

zoncpp
چهارشنبه 08 فروردین 1386, 10:25 صبح
بالاخره چی شد؟ ساختار با کلاس در ++C فرق نمی کنه؟
یعنی من می تونم یک ساختار با متغیرهای private و متدهای public تعریف کنم . بعد از این ساختار در برنامه های دیگه هم، اگه لازم شد استفاده کنم؟

البته اگه همین طور باشه و دقیقا ساختار و کلاس با هم فرق نداشته باشند، به هر حال استفاده از ساختار جهت شی گرایی برنامه در عرف برنامه نویسی ++C درست نیست. (شکل قشنگی نداره)

american_iran2006
چهارشنبه 08 فروردین 1386, 11:46 صبح
بالاخره چی شد؟ ساختار با کلاس در ++C فرق نمی کنه؟
یعنی من می تونم یک ساختار با متغیرهای private و متدهای public تعریف کنم . بعد از این ساختار در برنامه های دیگه هم، اگه لازم شد استفاده کنم؟

البته اگه همین طور باشه و دقیقا ساختار و کلاس با هم فرق نداشته باشند، به هر حال استفاده از ساختار جهت شی گرایی برنامه در عرف برنامه نویسی ++C درست نیست. (شکل قشنگی نداره)


تنها تفاوت بین ساختار و کلاس در ++c اینه که class ها اول private هستن بعد publice براشون تعریف میشه ؛ اما در ساختار ها همه چیز اول publice هست و بعد rpivat تعریف میشه

اینا همه ابزارن ؛ یه موقش هر کدوم که لازم باشه استفاده میشه؛؛ اما در برنامه نویسی های پیشرفته از class ها برای شی گرایی استفاده میکنند

این خاصیت در c وجود نداره

Smart User
چهارشنبه 08 فروردین 1386, 15:19 عصر
سلام.

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

american_iran2006
پنج شنبه 09 فروردین 1386, 00:17 صبح
ممنون میشم اگه مقالشو بزارید :قلب:

sgb110
پنج شنبه 09 فروردین 1386, 01:08 صبح
سلام
لطفا یه مرجع برای من مبتدی معرفی کنید تا به صورت ریشه ی با مفهوم شی گرایی آشنا بشم
ممنون

pa2ab65
پنج شنبه 09 فروردین 1386, 01:32 صبح
سلام.

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

مهمترین دلیل همینه یعنی تخصیص حافظه
یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C# و java این garbage collector که پاکش می کنه.

در مورد وراثت هم بگم من تو C# مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!) البته بعید نیست که VC++ پشتیبانیش کنه چون هر کاری ازش بر میاد ;)
در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.

امیدوارم کمک کرده باشم.

american_iran2006
پنج شنبه 09 فروردین 1386, 13:23 عصر
در مورد وراثت هم بگم من تو C# مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!)
من کامپایلش کردم :: شما هم برای اطمینان این کارو بکنید تا باورتون بشه
اینم سورس ::

#include<iostream>
#include<conio.h>
using namespace std;
struct p1{
void p2();
};
void p1::p2(){
cout <<"didi mishe";
}
struct p3 :public p1{
};

int main()
{
int b;
p3 a;
a.p2();
b=getch();
return 0;
}


در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.
.
اینم سورس سازنده با فرستادنه ارگومان به شی
#include<iostream>
#include<conio.h>
using namespace std;
struct p1{
private:
int a;
public:
p1(int b){
a=b;
cout <<a;
}
~p1(){
cout <<"\n"<<"inam mokhareb";}
};

int main()
{
int c;
p1 s(10);
c=getch();
return 0;
}



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

#include<iostream>
#include<conio.h>
using namespace std;
struct p1{
private:
int a;
public:
p1(){
a=10;
cout <<a;
}
~p1(){
cout <<"\n"<<"inam mokhareb";}
void p2(){
cout <<"\n"<<a;}
};

int main()
{
int c;
p1 s;
s.p2();
c=getch();
return 0;
}

american_iran2006
پنج شنبه 09 فروردین 1386, 13:25 عصر
مهمترین دلیل همینه یعنی تخصیص حافظه
یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C# و java این garbage collector که پاکش می کنه.

.

در این مورد اگه منبع و یا مقاله ای دارید که تو زمینه ++c باشه ؛ لطفا بزارید

Arash_j13
جمعه 10 فروردین 1386, 22:05 عصر
مهمترین دلیل همینه یعنی تخصیص حافظه
یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C# و java این garbage collector که پاکش می کنه.

در مورد وراثت هم بگم من تو C# مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!) البته بعید نیست که VC++ پشتیبانیش کنه چون هر کاری ازش بر میاد ;)
در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.

امیدوارم کمک کرده باشم.

دوست عزیز دارید اشتباه می گید
او لبهتره دیدتون رو نسبت به برنامه نویسی شی گرا درست کنید وقتی می نویسید int n شما یه ابجکت ساختید که از نوع کلاس int هست این کلاس هم مثل بقیه کلاس ها یه کلاسه با این تفاوت که به صورت داخلی کامپایلر می دونه باهاش چطوری برخورد کنه در مورد حافظه هم دارید اشتباه می گید
این کد سی رو ببینید



struct test1
{
int i;
char c;
};

int main()
{
struct test1* pt =(test1*)malloc(sizeof (test1));

}


تو یه استراکت تعریف شده که برخلاف گفته شما از حافظه استک استافده نمی کنه بلکه از Heap استفاده می کنه یا اینو ببیند یه کد سی پلاس پلاس هست که یه کلاس تعریف شده ولی حافظه ابکت از استک تامین می شه




class test2
{
int i;
char c;
};

int main()
{
test2 ob;

}

pa2ab65
جمعه 10 فروردین 1386, 23:36 عصر
راستش اون چیزایی که من گفتم مال زبان C# . فکر می کردم تو C++ هم همینطوریه. ولی بر اساس چیزایی که دیروز خوندم(که الآنم اومدم تصحیحش کنم) فهمیدم مثل اینکه struct و class و همچنین نحوه تخصیص حافظه شون خیلی با هم تفاوت داره. من شنیدم struct تو C++ چندان تفاوتی با کلاس نداره و حرف اون دوست عزیزمون درست بوده. فکر می کنم اساسن واسه همین تو C# سیستم struct رو عوض کردن و اینکه java هم struct نداره به همین دلیله چون java چیزای اضافه ی C++ رو حذف کرده واسه اینکه کامپایلرش کوچیکتر شه!!!

از اینکه اطلاعات غلط دادم معذرت می خوام:اشتباه: :ناراحت:

Arash_j13
شنبه 11 فروردین 1386, 09:17 صبح
سی ++ لازم بوده که از برنامه های سی پشتبانی کنه برای همین نمی تونستن سی ++ رو فقط شی گرا بسازن برای همین مجبور شدن تمام خصوصیات ساخت یافته سی رو هم نگه داری کنن ولی جاوا و سی شارپ لازم نبوده از چیزی حمایت کنه برای همین ا اول شی گرا ساخته شده و شما اثری از المان های برنامه نویسی ساخته یافته در اون نمی بینید شا نه توابع بدون کلاس دارید و نه متغییر های بدون کلاس استراکت هم به این دلیل نیست که در سی ++ استراکت و کلاس تفاوت چندانی ندارن هر می تونید اعضای داده و اعضای تابعی داشته باشند شما می تونید یه کلاس رو از یه استراکت مشتق کنید و یا بر عکس و این ها همه فقط به خاطر اینکه برای سازگاری با سی نمی تونستن استراکت رو حذف کنن و گرنه حتما حذف می شده

setarehjoon
شنبه 25 خرداد 1387, 10:39 صبح
ببخشیدا با یک مثال کوچیک میشه بگین چجوری می شه این یکی و مثل اون یکی نوشت
منظورم کلاس و ساختار

talasefid
جمعه 31 خرداد 1387, 02:44 صبح
شی گرایی بصورت خودمونی:
از چهار محور کلی حمایت میکنه
1-Abstraction دادن صفات و ویژگی هایی به یک شی... مثلا اگر قرار است یک شی کارمند رو پیاده سازی کنیم صفاتی چون نام وسن و شماره پرسنلی و..از اون برامون مهمه ولی مثلا تعداد موهای سرش یا رنگ چشماش نه!!
خب پس شی کارمند ما چه شکلی میشه ؟ یه کارمندی میشه که ما با صفاتی که لازم داریم تعریف کردیم،پس توی دنیای واقعی وجود نداره و تنها یک شی مجرد(Abstrac( هستش

2-Encapsulation:
کپسوله کردن!!از اسمش پیداس یعنی مثلا مثل وقتی که یک کپسول می خوری تو از مواد داخلش والبته از روش ساخت اون مواد هیچ اطلاعی نداری ..بدردت هم نمیخوره تو فقط میدونی که این کپسول واسه چه مرضی خوبه..و دیگر هیچ! خب توی شی گرایی هم تا جایی که ممکنه کمترین عرضه اطلاعات از نحوه ساخت وپیاده سازی(implementکردن) و حتی صفات رو به بقیه میگم
3-Iheritance
ارث بری..که خب مثل اسمش نوع وشیوه ارث بردن کلاس ها از همدیگه رو تعیین میکنه..مثل لاکپشت من که اسمش غزله و یک شی از کلاس لاکپشت هاست .که کلاس لاکپشت ها هم از کلاس مثلا خزندگان ارث بری داره ...پسمن میتونم بگم که غزل یک خزنده و یک لاکپشته!!
ولی اگه غزل فقط یه شی از کلاس خزنده ها بود که هیچ منطقی نمیتونست بگه غزل حتما لاکپشته.شاید مثلا یه مار می بود!!

4-polymerphism
چند ریختی
که خب اون دوستمون کامل توضیح داده بود.....

yaserbalaghi
جمعه 14 آبان 1389, 17:36 عصر
سلام
عزیزان من تفاوت ساختار با کلاس در سی پلاس پلاس و سی شارپ در نوع داده ایشون هست .
یعنی اینکه ساختارها نوع های داده ای Value Type هستند ولی کلاسها Refrence Type هستند باز هم یعنی اینکه :
ساختارها بر روی پشته مقدایرشون نگهداری میشه ولی کلاسها آدرسشون روی پوشته و مقادیر داده هاشون روی Heap دخیره میشه .

این چیز هایی رو که نوشتم روی شکل بهتر میشه نشون داد که در اینجا امکانش نیست .
اگه کسی توضیحات کاملتری خواست به من میل بزنه :
yaserbalaghi@aol.com

hamed121
جمعه 25 مرداد 1392, 05:05 صبح
با سلام و عرض ادب



دوستان تنها تفاوت کلاس و ساختار در نوع دسترسی پیشفرض هست که در ساختار، بصورت عمومی و در کلاس، بصورت خصوصی است من این مطلب رو صراحتا در مرجع کامپایلر ++C آی بی ام (http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage% 2Fref%2Fcplr054.htm) خوندم

شک در این مورد نکنید

hamed121
جمعه 25 مرداد 1392, 05:16 صبح
سی ++ لازم بوده که از برنامه های سی پشتبانی کنه برای همین نمی تونستن سی ++ رو فقط شی گرا بسازن برای همین مجبور شدن تمام خصوصیات ساخت یافته سی رو هم نگه داری کنن ولی جاوا و سی شارپ لازم نبوده از چیزی حمایت کنه برای همین ا اول شی گرا ساخته شده و شما اثری از المان های برنامه نویسی ساخته یافته در اون نمی بینید شا نه توابع بدون کلاس دارید و نه متغییر های بدون کلاس استراکت هم به این دلیل نیست که در سی ++ استراکت و کلاس تفاوت چندانی ندارن هر می تونید اعضای داده و اعضای تابعی داشته باشند شما می تونید یه کلاس رو از یه استراکت مشتق کنید و یا بر عکس و این ها همه فقط به خاطر اینکه برای سازگاری با سی نمی تونستن استراکت رو حذف کنن و گرنه حتما حذف می شده
دقیقا با شما موافقم
لینک اثبات موضوع (http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage% 2Fref%2Fcplr054.htm)