وبلاگ دانشجویان مهندسی فناوری اطلاعات (IT) پیام نور کرمانشاه

این وبلاگ یک وبلاگ دانشجویی است.کپی برداری از مطالب آن با ذکر منبع مجاز است

وبلاگ دانشجویان مهندسی فناوری اطلاعات (IT) پیام نور کرمانشاه

این وبلاگ یک وبلاگ دانشجویی است.کپی برداری از مطالب آن با ذکر منبع مجاز است

تبدیل انواع داده ها(type casting) در ++c

اغلب برنامه هاانواع مختلفی از داده ها را پردازش می کنند.بعضی از اعمال با انواع یکسان انجام

 میشوند مثلاجمع کردن دو مقدارصحیح یک مقدار صحیح را تولید می کند.اما گاهی لازم است یک

نوع داده به نوع دیگری تبدیل شود....

این کار ممکن است در عبارات محاسباتی یا دستور انتساب انجام شود .اگر انواع جدید (اشیایی از کلاس های مختلف)بخواهند با هم ترکیب شوند در حالت عادی داندکه چگونه تبدیلات بین انواع جدید و انواع جدید و انواع اولیه را انجام دهد.برنامه نویس باید چگونگی این تبدیلات را مشخص کند.این تبدیلات را می توان با سازنده تبدیل انجام داد.این سازنده دارای یک آرگومان است که می توانداشیایی از یک نوع (از جمله انواع اولیه)را به اشیایی از یک کلاس خاص تبدیل کند.عملگر تبدیل می تواند شی ای از یک کلاس را به شی ای از کلاس دیگر و یا شی ای از نوع اولیه تبدیل کند.این عملگر تبدیل باید تابع عضو غیر استاتیک باشد و نمی تواند به عنوان یک تابع دوست تعریف شود.

Test::operator char*()const;

یک تابع تبدیل مجددا تعریف شده را اعلان می کندتا شی  char* را خارج از یک شی از نوع

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

کند.نوع برگشتی نوع شیئی است که در حال تبدیل است .اگر s یک شی کلاس باشد وقتی کامپایلر

 عبارت s (*char)را میبیند فراخوانی s.operator char*() را ایجاد می کند.توابع عملگر تبدیل

 می توابع عملگر تبدیل می توانندطوری تعریف شوندکه شیئی از یک کلاس را به انواع اولیه یا

اشیایی از کلاس دیگر تبدیل کنند.الگوهای زیر را در نظر بگیرید:

Test::operator int()const;

Test::operator otherclass().const;

این الگوها توابع عملگر تبدیل مجددا تعریف شده ایی را اعلان می کنند که شی ای از یک نوع کلاس test را به یک مقدار صحیح و یا شی ای از نوع کلاسtest را به  شی ای از کلاس other class تبدیل می کنند.یکی از جالب ترین کاربرد عملگرهای تبدیل و سازنده های تبدیل این است که کامپایلر می تواند این توابع را فراخوانی کندت اشیای موقت را ایجاد نماید.به عنوان مثال اگر شی s از نوع کلاس string باشد و در جایی از برنامه ظاهر شود که می بایست یک اشاره گر معمولی char*ظاهر میشد مانند آنچه در زیر آمده است:

Cout<<s;

کامپایلر تابع عملگر تبدیل مجددا تعریف شده  operator char *را فراخوانی می کند تا این شی را به char * تبدیل نمایدو نتیجه را در عبارت بکار ببرد.با این عملگر تبدیلی که برای کلاس string فراهم آمده است لازم نیست عملگر >>مجددا تعریف شود تا با استفاده از cout بتواندstring را به خروجی ببرد.

نظرات 2 + ارسال نظر
امیر یکشنبه 11 بهمن‌ماه سال 1388 ساعت 03:27 ب.ظ

ممنون،خیلی خوب بود.
البته به زبان ++C بود،درسته؟

خواهش میکنم قابلتونو نداشت.آره به زبان ++c بود.:)

[ بدون نام ] دوشنبه 12 بهمن‌ماه سال 1388 ساعت 12:10 ق.ظ http://www.fafajoon.blogfa.com

خوب بود مرسی

خواهش میکنم....:)

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد