PDA

View Full Version : سوال: ref & ^ یعنی چی؟



Modifier
چهارشنبه 15 خرداد 1387, 15:08 عصر
سلام علیکم

اول بعضی کلاس ها ref گذاشته شده. برا چی هست ؟

چرا تو تعریف شئ از ^ استفاده میشود ؟ مگه بدون این نمیشه ؟

یا علی

Nima_NF
چهارشنبه 15 خرداد 1387, 17:25 عصر
این موارد از وصله های غیر استاندارد مایکروسافت به زبان ++C هست تا این زبان بتواند با مفاهیم جدید دات نت درست عمل کند.

ref در C++/CLI برای تعریف class یا struct به صورتی هست که گفته می شود آن کلاس از یک شئی مرجع بر روی حافظه heap مدیریت شده هست، که قابلیت های جدیدی به شما می دهد از جمله Garbage collection و ارث بری از سایر کلاس های مدیریت شده Net.
اگر کلاس را با ref تعریف نکنید یعنی به همان صورت native در ++C مرسوم می باشد و بر روی حافظه مدیریت نشده .

^ در C++/CLI جایگزین * و & در ++C غیر مدیریت شده سابق (Native) هست و از این پس برای کار با دات نت باید از آن استفاده شود (همان اشاره گر ها و آدرس ها و ساختن شئی از کلاسی اما بر روی حافظه مدیریت شده )

Modifier
پنج شنبه 16 خرداد 1387, 03:12 صبح
سلام علیکم

خب منم تو همین گیر کردم.
با دات نت 2005 دارم برنامه نویسی میکنم.
ولی به قول شما از nativeاستفاده میکنم چون با اینکه تازه کارم ولی فکر کردم تو مباحث شئ گرا و c++ اینطوری اصولی تره.
در هرحال من میخوام با filestream یه فایل رو بخونم با متد read یه پارامتر داره که آرایه هست که با ^ باید تعریف بشه ولی تو کلاسای من چون مدیریت نشده نمیتونم این طوری تعریف کنم .

چیکار کنم ؟

موفق باشید

یا علی

PC2st
پنج شنبه 16 خرداد 1387, 12:42 عصر
در c++/cli امکان استفاده از کدهای managed در native نیست ولی بر عکسش (یعنی استفاده از native در managed) براحتی انجام شدنیه. البته به طریقی میشه از کدهای managed در native هم استفاده کرد اما این قابلیت در خود c++/cli گنجانده نشده ولی میشه به طریق دیگه ای عمل کرد (کلیک کنید!) (http://barnamenevis.org/forum/showthread.php?t=97715).

Modifier
پنج شنبه 16 خرداد 1387, 22:05 عصر
سلام علیکم

یعنی من نمی تونم توی vs.net2005 کدهای native بنویسم ؟حتما باید از کدهای managed استفاده کرد؟

ممنون

یا علی

PC2st
جمعه 17 خرداد 1387, 01:06 صبح
همانطور که توی visual studio 6.0 برنامه های native مینوشتین، به همان صورت میتونین برنامه های native خودتون رو توی visual studio .net هم بنویسین.

همچنین در visual studio .net، گرامر (syntax) مخصوصی برای کار با net. تحت نام کدهای managed به c++ standard اضافه شده است. الزامی به استفاده کردن از کدهای managed نیست ولی در صورت استفاده کردن از آن، برنامه می تواند از قابلیت های net. استفاده کند و وابسته به net. خواهد بود. در غیر اینصورت یعنی در صورت عدم استفاده از کدهای managed، خروجی برنامه بطور کاملا native می باشد مثل زمانی که از visual studio 6.0 استفاده می کردید.